首页 > 其他分享 >Maven 入门实战(1)--简介及安装

Maven 入门实战(1)--简介及安装

时间:2023-06-24 10:33:49浏览次数:42  
标签:文件 入门 -- 测试 Maven 仓库 clean test

Maven 是一种软件项目管理和理解工具;它基于项目对象模型(POM),从中央位置管理项目的构建、报告和文档,并帮助开发人员轻松管理依赖项并自动化构建过程。

1、简介

1.1、项目目录

Maven 使用约定优于配置的原则,提倡使用一个共同的标准目录结构。

目录说明
${basedir} 项目根目录,存放 pom.xml 和 所有的子目录
${basedir}/src/main/java java 源代码
${basedir}/src/main/resources 资源目录
${basedir}/src/test/java 测试代码
${basedir}/src/test/resources 测试用的资源
${basedir}/src/main/webapp/WEB-INF web 应用目录
${basedir}/target 打包输出目录
${basedir}/target/classes 编译输出目录
${basedir}/target/test-classes 测试编译输出目录
~/.m2/repository Maven 默认的本地仓库目录

1.2、生命周期

Maven 有三个标准的生命周期:

  • clean:项目清理
  • default(build):项目部署
  • site:项目站点文档创建

每个生命周期又包含多个阶段。

1.2.1、clean 生命周期

生命周期阶段 说明
pre-clean 执行一些需要在 clean 之前完成的工作
clean 移除所有上一次构建生成的文件
post-clean 执行一些需要在 clean 之后完成的工作

1.2.2、default(build) 生命周期

生命周期阶段说明
validate(校验) 校验项目是否正确,是否包含所有必要信息以完成项目的构建
initialize(初始化) 初始化构建状态,比如设置属性值
generate-sources(生成源代码) 生成用于编译阶段中的任何源代码
process-sources(处理源代码) 处理源代码,比如说,过滤任意值
generate-resources(生成资源文件) 生成将会包含在项目包中的资源文件
process-resources (处理资源文件) 复制和处理资源到目标目录,为打包阶段最好准备
compile(编译) 编译项目的源代码
process-classes(处理类文件) 处理编译生成的文件,比如说对 Java class 文件做字节码改善优化
generate-test-sources(生成测试源代码) 生成用于编译阶段中的任何测试源代码
process-test-sources(处理测试源代码) 处理测试源代码,比如说,过滤任意值
generate-test-resources(生成测试资源文件) 为测试创建资源文件
process-test-resources(处理测试资源文件) 复制和处理测试资源到目标目录
test-compile(编译测试源码) 编译测试源代码
process-test-classes(处理测试类文件) 处理测试源码编译生成的文件
test(测试) 使用合适的单元测试框架运行测试(如:Juint )
prepare-package(准备打包) 在实际打包之前,执行任何的必要的操作为打包做准备
package(打包) 将编译后的文件及资源文件打包成可分发格式的文件,如:JAR、WAR 或者 EAR 文件。
pre-integration-test(集成测试前) 在执行集成测试前进行的必要动作,如:搭建需要的环境
integration-test(集成测试) 部署项目到可以运行集成测试的环境中
post-integration-test(集成测试后) 在执行集成测试完成后进行的必要动作,如:清理集成测试环境
verify (验证) 运行任意的检查来验证项目包有效且达到质量标准
install(安装) 安装项目包到本地仓库,这样项目包可以用作其他本地项目的依赖
deploy(部署) 将最终的项目包复制到远程仓库,与其他开发者和项目共享

1.2.3、site 生命周期

生命周期阶段 说明
pre-site 执行一些需要在生成站点文档之前完成的工作
site 生成项目的站点文档
post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
site-deploy 将生成的站点文档部署到特定的服务器上

1.3、Maven 插件

Maven 每个生命周期中都包含着一系列的阶段(phase);这些 phase 相当于 Maven 提供的统一的接口,这些 phase的实现由 Maven 的插件来完成。我们在输入 mvn 命令的时候,比如 mvn clean,clean 对应的就是 clean 生命周期中的 clean 阶段。但是 clean 的具体操作是由 maven-clean-plugin 来实现的。所以说 Maven 生命周期的每一个阶段的具体实现都是由 Maven 插件实现的。Maven 实际上是一个依赖插件执行的框架,每个任务实际上是由插件完成。Maven 插件通常被用来:

插件通常提供了一个目标的集合,可以使用下面的语法执行:

mvn [plugin-name]:[goal-name]

例如,一个 Java 工程可以使用 maven-compiler-plugin 的 compile-goal 编译,使用以下命令:

mvn compiler:compile

常用插件:

插件说明
clean 清理目标文件,删除目标目录
compiler 编译 Java 源文件
surefile 运行 JUnit 单元测试,创建测试报告
jar 构建 JAR 文件
war 构建 WAR 文件
javadoc 为工程生成 Javadoc

1.4、仓库

Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。Maven 仓库能帮助我们管理构件(主要是JAR),它就是放置所有 JAR、WAR、ZIP、POM 文件的地方。Maven 仓库有三种类型:本地(local)、中央(central)、远程(remote)。

1.4.1、本地仓库

Maven 的本地仓库,在安装 Maven 后并不会创建,它是在第一次执行 maven 命令的时候才被创建。运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。Maven 本地仓库目录默认为:%USER_HOME%/.m2/repository;要修改默认位置,可在 Maven 的 settings.xml 文件中设置另一个路径:

<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 http://maven.apache.org/xsd/settings-1.2.0.xsd">
  <localRepository>d:/repo</localRepository>
/>

1.4.2、中央仓库

Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。中央仓库包含了绝大多数流行的开源 Java 构件,以及源码、作者信息、SCM、信息、许可证信息等。一般来说,简单的 Java项目依赖的构件都可以在这里下载到。中央仓库不需要配置,但需要通过网络才能访问。maven 社区提供了一个网站用来搜索浏览中央仓库的内容:https://central.sonatype.com/;通过该网站可以方便搜索查看相应的构件。

1.4.3、远程仓库

如果 Maven 在中央仓库中也找不到依赖的文件,它会停止构建过程并输出错误信息到控制台。为避免这种情况,Maven 提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件。

1.4.4、Maven 依赖搜索顺序

当我们执行 Maven 构建命令时,Maven 会按照以下顺序查找依赖的库:
步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库。
步骤 3 - 如果没有设置远程仓库,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。

2、安装

在官网(https://maven.apache.org/download.cgi)下载安装包并解压,然后配置环境变量即可;这里使用 3.8.8 版本安装部署。

2.1、Windows 安装

这里假设 Maven 的解压目录为:D:\apache\apache-maven-3.8.8,新建用户变量 MAVEN_HOME

编辑用户变量 Path,添加变量值:%MAVEN_HOME%\bin

打开 cmd,检查安装是否成功:

C:\Users\admin>mvn -version
Apache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)
Maven home: D:\apache\apache-maven-3.8.8
Java version: 1.8.0_321, vendor: Oracle Corporation, runtime: D:\soft\Java\jdk1.8.0_321\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

2.2、Linux 安装

这里假设 Maven 的解压目录为:/home/mongo/soft/apache-maven-3.8.8,编辑 ~/.bash_profile 设置环境变量:

export MAVEN_HOME=/home/mongo/soft/apache-maven-3.8.8
export PATH=$PATH:$MAVEN_HOME/bin

使配置生效:source ~/.bash_profile;然后检查安装是否成功:

app4:[/home/mongo] mvn -verion
Apache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)
Maven home: /home/mongo/soft/apache-maven-3.8.8
Java version: 1.8.0_321, vendor: Oracle Corporation, runtime: /home/mongo/soft/jdk1.8.0_321/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"

 

 

参考:https://www.runoob.com/maven/maven-tutorial.html。

标签:文件,入门,--,测试,Maven,仓库,clean,test
From: https://www.cnblogs.com/wuyongyin/p/17384045.html

相关文章

  • 什么是 SAP Commerce Cloud SmartEdit 的 preview API
    PreviewAPI使得SmartEdit能够将商户网站加载到请求的体验环境上的iframe中。体验环境是指特定站点、目录和目录版本的商户网站,并且还可以是指定的语言、日期和时间。为了以指定的体验环境呈现商户网站,SmartEdit将请求的商户网站加载到请求的体验环境的iframe中。为了在请求的体验......
  • sql练习-2
    2023-6-19sql语句----以下题目涉及到的表有--ecs_users(用户表)、--ecs_order_info(订单表)、--ecs_goods(商品表)、--ecs_goods_type(商品类型表)--usetest;select*fromecs_users;select*fromecs_goods;select*fromecs_order_info;select*fromecs_order_......
  • opencv学习笔记(九)
    模板匹配:在模板匹配中,我们引入函数cv2.matchTemplate()函数来执行模板匹配的操作res=cv2.matchTemplate(image,template,method,result=None,mask=None)image:输入的源图像,可以是灰度图像或彩色图像。template:要匹配的模板图像,必须与源图像具有相同的数据类型和通道数......
  • Angular 应用里 NullInjectorError - No provider for XX 错误的一个场景和分析过程
    最近处理客户incident,有个客户从Spartacus4升级到5.2之后,启动Storefront,console遇到了一个错误消息:NullInjectorError-NoproviderforAnonymousConsentTemplatesAdapter!引起这个错误消息的场景有很多,这个incident最后的场景是:以前的module通过loadedforroot完......
  • SAP Commerce Cloud 通过 SmartEdit 添加 Component 的一个例子
    如下图所示:位于ProductListLot内:url:http://localhost:4200/electronics-spa/en/USD/Open-Catalogue/Cameras/Digital-Cameras/Digital-Compacts/c/576观察到的OCC请求:https://localhost:9002/occ/v2/electronics-spa/cms/pages?pageType=CategoryPage&code=576&lang=en&......
  • Angular HTTPInterceptor 的使用一例
    假设你有一个Angular应用程序,其中有一个组件需要从服务器获取特定模型的数据。你可以使用上述方法将一个名为queryProductModel的查询参数添加到请求中,以便服务器能够根据该参数返回相应的模型数据。首先,你需要创建一个实现HttpInterceptor接口的拦截器。以下是一个示例的拦截器......
  • 如何直接通过 ABAP 调试器将 SE16 事务码里无法直接查看的内容下载到本地试读版
    在SAPABAP系统里,我们可以使用事务码SE16查看数据库表的内容。这个事务码很方便,但是有一些局限性,比如类型为RAWSTRING的二进制内容,无法在这个事务码里方便的查看。下面的数据库表ZFILE是一个例子:字段VALUE存放的是文件的二进制内容。我们使用事务码SE16查看该文件的内......
  • SMTP 和 POP3 协议的区别和联系
    SMTP(SimpleMailTransferProtocol)和POP3(PostOfficeProtocol3)是两种常用的电子邮件协议,用于发送和接收电子邮件。虽然它们都涉及到电子邮件的传输,但在功能和使用方式上有一些区别。下面将详细介绍SMTP和POP3协议的区别和联系。1.功能SMTP:SMTP是一种用于发送电子邮件的协议。它......
  • Passive-interface用法精解
    懒人看结论: RIP上passive-interface只收不发路由更新;OSPF和EIGRP上passive-interface则不能收发hello更包,不能建邻居。不建立OPPF/EIGRP邻居,不发送也不接收HELLO包,但是能通告接口网络。一、在RIP或IGRP路由器上(1)配置passive-interface的作用是:让特定的接口不通告任何路由更新......
  • Windows操作系统磁盘碎片整理程序的作用
    Windows操作系统磁盘碎片整理程序的作用是优化硬盘的存储和访问效率,提升系统的整体性能。磁盘碎片是指文件在硬盘上分散存储的情况,导致文件的不连续存储,从而增加了文件读取和写入的时间。磁盘碎片整理程序通过重新组织文件的存储位置,将文件片段整理成连续的空间,以减少磁盘访问的时......