目录
2.Maven POM(Project Object Model,项目对象模型)
1.设置 Maven 环境变量
添加环境变量 MAVEN_HOME:E:\Maven\apache-maven-3.3.9
编辑系统变量 Path,添加变量值:;%MAVEN_HOME%\bin
2.Maven POM(Project Object Model,项目对象模型)
POM是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖等。
POM 中可以指定以下配置:
- 项目依赖
- 插件
- 执行目标
- 项目构建 profile
- 项目版本
- 项目开发者列表
- 相关邮件列表信息
在创建 POM 之前,首先需要描述项目组 (groupId), 项目的唯一ID。
<project xmlns = "http://maven.apache.org/POM/4.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- 模型版本 -->
<modelVersion>4.0.0</modelVersion>
<!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven会将该项目打成的jar包放本地路径:/com/companyname/project-group -->
<groupId>com.companyname.project-group</groupId>
<!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
<artifactId>project</artifactId>
<!-- 版本号 -->
<version>1.0</version>
</project>
所有 POM 文件都需要 project 元素和三个必需字段:groupId,artifactId,version。
使用以下命令来查看 Super POM 默认配置:
mvn help:effective-pom
3.Maven 构建生命周期
其声明周期定义了一个项目构建到发布的过程。
default生命周期
验证 validate | 验证项目 | 验证项目是否正确且所有必须信息是可用的 |
编译 compile | 执行编译 | 源代码编译在此阶段完成 |
测试 Test | 测试 | 使用适当的单元测试框架(例如JUnit)运行测试。 |
包装 package | 打包 | 创建JAR/WAR包如在 pom.xml 中定义提及的包 |
检查 verify | 检查 | 对集成测试的结果进行检查,以保证质量达标 |
安装 install | 安装 | 安装打包的项目到本地仓库,以供其他项目使用 |
部署 deploy | 部署 | 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程 |
Maven有三个标准的生命周期:
- clean:项目清理的处理
- default(build):项目部署的处理
- site:项目站点文档创建的处理
构建阶段由插件目标构成。一个插件目标代表一个特定的任务,这有助于项目的构建和管理。
3.1Clean生命周期
在执行mvn post-clean命令时,Maven会调用clean生命周期,它包括三个阶段:
- pre-clean:执行一些需要在clean之前完成的工作
- clean:移除所有上一次构建生成的文件
- post-clean:执行一些需要在clean之后立即完成的工作
如果执行 mvn clean 将运行以下两个生命周期阶段:
pre-clean, clean
如果我们运行 mvn post-clean ,则运行以下三个生命周期阶段:
pre-clean, clean, post-clean
3.2Default(Build)生命周期
这是 Maven 的主要生命周期,被用于构建应用,包括下面的 23 个阶段:
生命周期阶段 | 描述 |
---|---|
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(部署) | 将最终的项目包复制到远程仓库中与其他开发者和项目共享。 |
***************命令行调用***************
- 在开发环境中,使用下面的命令去构建、安装工程到本地仓库
mvn install
- 这个命令在执行 install 阶段前,按顺序执行了 default 生命周期的阶段 (validate,compile,package,等等),我们只需要调用最后一个阶段,如这里是 install。
- 在构建环境中,使用下面的调用来纯净地构建和部署项目到共享仓库中
mvn clean deploy
- 这行命令也可以用于多模块的情况下,即包含多个子项目的项目,Maven 会在每一个子项目执行 clean 命令,然后再执行 deploy 命令。
3.3Site生命周期
Maven Site 插件一般用来创建新的报告文档、部署站点等。
- pre-site:执行一些需要在生成站点文档之前完成的工作
- site:生成项目的站点文档
- post-site: 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
- site-deploy:将生成的站点文档部署到特定的服务器上
这里经常用到的是site阶段和site-deploy阶段,用以生成和发布Maven站点,这可是Maven相当强大的功能,Manager比较喜欢,文档及统计数据自动生成,很好看。
4.Maven构建配置文件
使用构建配置文件,可以为不同的环境(如生产环境,测试环境,开发环境)定制构建方式。
配置文件在pom.xml文件中使用activeProfiles或者profiles元素指定,并可以通过各种方式触发。配置文件在构建时修改POM,并且用来给参数设定不同的目标环境。
4.1构建配置文件的类型
类型 | 在哪定义 |
---|---|
项目级(Per Project) | 定义在项目的POM文件pom.xml中 |
用户级 (Per User) | 定义在Maven的设置xml文件中 (%USER_HOME%/.m2/settings.xml) |
全局(Global) | 定义在 Maven 全局的设置 xml 文件中 (%M2_HOME%/conf/settings.xml) |
4.2配置文件激活
- 使用命令控制台输入显式激活。
--->profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。
注意:构建配置文件采用的是 <profiles> 节点。
- 通过 maven 设置。
- 基于环境变量(用户或者系统变量)。
- 操作系统设置(比如说,Windows系列)。
- 文件的存在或者缺失。
5.Maven仓库
仓库是一个位置Place。Maven仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。
在Maven中,任何一个依赖,插件或者项目构建的输出,都可以称之为构件。
Maven仓库能够帮我们管理构件(主要时JAR),他就是放置所有JAR文件(WAR,ZIP,POM等)的地方。
Maven仓库有三种类型:
- 本地local
- 中央central
- 远程remote
5.1本地仓库
本地仓库在安装Maven后并不会创建,它是在第一次执行maven命令的时候才被创建。
运行maven时,maven所需要的任何构件都是直接 从本地仓去获取的。若本地没有,首先尝试从远程仓库下载构件到本地仓库,然后再使用本地仓库的构件。
默认情况下,每个用户在自己的用户目录下都有一个路径名为 .m2/respository/ 的仓库目录。
Maven 本地仓库默认被创建在 %USER_HOME% 目录下。要修改默认位置,在 %M2_HOME%\conf 目录中的 Maven 的 settings.xml 文件中定义另一个路径。
当你运行 Maven 命令,Maven 将下载依赖的文件到你指定的路径中。
<localRepository>d:/maven/repository</localRepository>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>d:/maven/repository</localRepository>
</settings>
5.2中央仓库
Maven中央仓库是由Maven社区提供的仓库,其中包含了大量常用的库。
中央仓库的关键概念:
- 这个仓库由 Maven 社区管理。
- 不需要配置。
- 需要通过网络才能访问。
要浏览中央仓库的内容,maven 社区提供了一个 URL:http://search.maven.org/#browse。使用这个仓库,开发人员可以搜索所有可以获取的代码库。
5.3远程仓库
如果maven在中央仓库中也找不到依赖的文件,他会停止构建过程并输出错误信息到控制台。为了避免这种风险,Maven提供了远程仓库的概念,他是开发人员自己定制的仓库,包含了所需要的代码库或者其他工程中用到的jar文件。
5.4Maven 依赖搜索顺序
当我们执行 Maven 构建命令时,Maven 开始按照以下顺序查找依赖的库:
- 步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
- 步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中以备将来引用。
- 步骤 3 - 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
- 步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库以备将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。
5.5Maven 阿里云(Aliyun)仓库
Maven 仓库默认在国外, 国内使用难免很慢,我们可以更换为阿里云的仓库。
第一步:修改 maven 根目录下的 conf 文件夹中的 settings.xml 文件,在 mirrors 节点上,添加内容如下:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
第二步: pom.xml文件里添加:
<repository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
6.Maven插件
Maven实际上是一个依赖插件执行的框架,每个任务实际上是由插件完成的。Maven插件通常被用来:
- 创建jar文件
- 创建war文件
- 编译代码文件
- 代码单元测试
- 创建工程文档
- 创建工程报告
插件通常提供了一个目标的集合,并且可以使用下面的语法执行:
<code>mvn [plugin-name]:[goal-name]</code>
例如,一个 Java 工程可以使用 maven-compiler-plugin 的 compile-goal 编译,使用以下命令:
<code>mvn compiler:compile</code>
6.1插件类型
Maven 提供了下面两种类型的插件:
类型 | 描述 |
---|---|
Build plugins | 在构建时执行,并在 pom.xml 的 元素中配置。 |
Reporting plugins | 在网站生成过程中执行,并在 pom.xml 的 元素中配置。 |
下面是一些常用插件的列表:
插件 | 描述 |
---|---|
clean | 构建之后清理目标文件。删除目标目录。 |
compiler | 编译 Java 源文件。 |
surefile | 运行 JUnit 单元测试。创建测试报告。 |
jar | 从当前工程中构建 JAR 文件。 |
war | 从当前工程中构建 WAR 文件。 |
javadoc | 为工程生成 Javadoc。 |
antrun | 从构建过程的任意一个阶段中运行一个 ant 任务的集合。 |
7.Maven 构建 Java 项目与测试
Maven 使用原型 archetype 插件创建项目。要创建一个简单的 Java 应用,我们将使用 maven-archetype-quickstart 插件。
在下面的例子中,我们将在 D:\MVN 文件夹下创建一个基于 maven 的 java 应用项目。
命令格式如下:
mvn archetype:generate "-DgroupId=com.companyname.bank" "-DartifactId=consumerBanking" "-DarchetypeArtifactId=maven-archetype-quickstart" "-DinteractiveMode=false"
参数说明:
- -DgroupId: 组织名,公司网址的反写 + 项目名称
- -DartifactId: 项目名-模块名
- -DarchetypeArtifactId: 指定 ArchetypeId,maven-archetype-quickstart,创建一个简单的 Java 应用
- -DinteractiveMode: 是否使用交互模式
生成的文件夹结构如下:
各个文件夹说明:
文件夹结构 | 描述 |
---|---|
consumerBanking | 包含 src 文件夹和 pom.xml |
src/main/java contains | java 代码文件在包结构下(com/companyName/bank)。 |
src/main/test contains | 测试代码文件在包结构下(com/companyName/bank)。 |
src/main/resources | 包含了 图片 / 属性 文件(在上面的例子中,我们需要手动创建这个结构)。 |
D:\MVN\consumerBanking\src\main\java\com\companyname\bank文件夹中,可以看到一个 App.java,代码如下:
D:\MVN\consumerBanking\src\test\java\com\companyname\bank文件夹,可以看到 Java 测试文件 AppTest.java。
进入 D:/MVN 文件夹下,打开 consumerBanking 文件夹。你将看到有一个 pom.xml 文件,代码如下:
从以上 xml代码中,可知 Maven 已经添加了 JUnit 作为测试框架。
打开命令控制台,跳转到 C:\MVN\consumerBanking 目录下,并执行以下 mvn 命令开始构建项目,生成target文件:
mvn clean package
执行完后,我们已经构建了自己的项目并创建了最终的 jar 文件,下面是要学习的关键概念:
- 我们给了 maven 两个目标,首先清理目标目录(clean),然后打包项目构建的输出为 jar(package)文件。
- 打包好的 jar 文件可以在 consumerBanking\target 中获得,名称为 consumerBanking-1.0-SNAPSHOT.jar。
- 测试报告存放在 consumerBanking\target\surefire-reports 文件夹中。
- Maven 编译源码文件,以及测试源码文件。
- 接着 Maven 运行测试用例。
- 最后 Maven 创建项目包。
D:\MVN\consumerBanking\target\classes>java com.companyname.bank.App
你可以看到结果:
Hello World!
添加 Java 源文件
接下来我们看看如何添加其他的 Java 文件到项目中。
package com.companyname.bank;
public class Util
{
public static void printMessage(String message){
System.out.println(message);
}
}
更新 App 类来使用 Util 类:
package com.companyname.bank;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
// 使用Util类,输出一段文字
Util.printMessage("Util Class Test OK!");
}
}
现在打开命令控制台,跳转到 D:\MVN\consumerBanking 目录下,并执行下面的 mvn 命令,进行Maven构建。
D:\MVN\consumerBanking>mvn clean compile
在 Maven 构建成功之后,跳转到 D:\MVN\consumerBanking\target\classes 目录下,并执行下面的 java 命令。
D:\MVN\consumerBanking\target\classes>java -cp . com.companyname.bank.App
你可以看到结果:
Hello World!
Util Class Test OK!
8.Maven引入外部依赖
如果我们需要引入第三库文件到项目,该怎么操作呢?
pom.xml 的 dependencies 列表列出了我们的项目需要构建的所有外部依赖项。
要添加依赖项,我们一般是先在 src 文件夹下添加 lib 文件夹,然后将你工程需要的 jar 文件复制到 lib 文件夹下。我们使用的是 ldapjdk.jar ,它是为 LDAP 操作的一个帮助库:
然后添加以下依赖到 pom.xml 文件中:
dependencies>
<!-- 在这里添加你的依赖 -->
<dependency>
<groupId>ldapjdk</groupId> <!-- 库名称,也可以自定义 -->
<artifactId>ldapjdk</artifactId> <!--库名称,也可以自定义-->
<version>1.0</version> <!--版本号-->
<scope>system</scope> <!--作用域-->
<systemPath>${basedir}\src\lib\ldapjdk.jar</systemPath> <!--项目根目录下的lib文件夹下-->
</dependency>
</dependencies>
9.Maven 项目模板
Maven使用archetype(原型,是一个插件,根据模板创建一个项目结构)来创建自定义的项目结构,形成Maven项目模板。
命令来快速创建 java 项目:(quickstart 原型插件创建一个简单的 java 应用程序。)
quickstart 原型插件创建一个简单的 java 应用程序。
mvn archetype:generate
Maven 将开始处理,并要求选择所需的原型:
按下 Enter 选择默认选项 (7: internal -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.))。
Maven 将询问项目细节。按要求输入项目细节。
Define value for property 'groupId': com.baymax.insurance
Define value for property 'artifactId': health
Define value for property 'version' 1.0-SNAPSHOT: :
Define value for property 'package' com.baymax.insurance: :
Maven 将要求确认项目细节,按 Enter 或按 Y
Confirm properties configuration:
groupId: com.baymax.insurance
artifactId: health
version: 1.0-SNAPSHOT
package: com.baymax.insurance
Y: :
现在 Maven 将开始创建项目结构,显示如下:
创建的项目
现在转到 D:\ > MVN 目录。你会看到一个名为 health 的 java 应用程序项目,就像在项目创建的时候建立的 artifactId 名称一样。 Maven 将创建一个有标准目录布局的项目,如下所示:
创建 pom.xml
Maven 为项目自动生成一个 pom.xml文件,如下所示:
就这样。现在你可以看到 Maven 的强大之处。你可以用 maven 简单的命令创建任何类型的项目,并且可以启动您的开发。
10.Maven项目文档
mvn archetype:generate -DgroupId=com.companyname.bank -DartifactId=consumerBanking -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
mvn archetype:generate "-DgroupId=com.companyname.bank" "-DartifactId=consumerBanking" "-DarchetypeArtifactId=maven-archetype-quickstart" "-DinteractiveMode=false"
两种方式都可以创建java项目
修改 pom.xml,添加以下配置(如果没有的话):
<project>
...
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.3</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.7</version>
</plugin>
</plugins>
</pluginManagement>
</build>
...
</project>
不然运行 mvn site 命令时出现 java.lang.NoClassDefFoundError: org/apache/maven/doxia/siterenderer/DocumentContent 的问题, 这是由于 maven-site-plugin 版本过低,升级到 3.3+ 即可。
打开 consumerBanking 文件夹并执行以下 mvn 命令。
C:\MVN\consumerBanking> mvn site
打开 D:\MVN\consumerBanking\target\site 文件夹。点击 index.html 就可以看到文档了。
Maven 使用一个名为 Doxia的文档处理引擎来创建文档,它能将多种格式的源码读取成一种通用的文档模型。要为你的项目撰写文档,你可以将内容写成下面几种常用的,可被 Doxia 转化的格式。
格式名 | 描述 | 参考 |
---|---|---|
Apt | 纯文本文档格式 | http://maven.apache.org/doxia/references/apt-format.html |
Xdoc | Maven 1.x 的一种文档格式 | http://jakarta.apache.org/site/jakarta-site2.html |
FML | FAQ 文档适用 | http://maven.apache.org/doxia/references/fml-format.html |
XHTML | 可扩展的 HTML 文档 | http://en.wikipedia.org/wiki/XHTML |
11.Maven 快照SNAPSHOT
快照:快照是一种特殊的版本,指定了某个当前的开发进度的副本。不同于常规的版本,Maven 每次构建都会在远程仓库中检查新的快照。
项目快照 vs 版本
对于版本,如果 Maven 以前下载过指定的版本文件,比如说 data-service:1.0,Maven 将不会再从仓库下载新的可用的 1.0 文件。若要下载更新的代码,data-service 的版本需要升到1.1。
快照的情况下,每次 app-ui 团队构建他们的项目时,Maven 将自动获取最新的快照(data-service:1.0-SNAPSHOT)。
app-ui 项目的 pom.xml 文件
app-ui 项目使用的是 data-service 项目的 1.0 快照。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>app-ui</groupId>
<artifactId>app-ui</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<name>health</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>data-service</groupId>
<artifactId>data-service</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
data-service 项目的 pom.xml 文件
data-service 项目为每次小的改动发布 1.0 快照。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>data-service</groupId>
<artifactId>data-service</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>health</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
虽然,快照的情况下,Maven 在日常工作中会自动获取最新的快照, 你也可以在任何 maven 命令中使用 -U 参数强制 maven 现在最新的快照构建。
mvn clean package -U
让我们打开命令控制台,去到 D:\ > MVN > app-ui 目录,然后执行下面的 mvn 命令。
D:\MVN\app-ui>mvn clean package -U
Maven 将在下载 data-service 最新的快照之后,开始构建项目。
在 pom.xml 文件中,我们常用到的一些重要元素节点如下表所示:
元素节点 | 描述 |
---|---|
SCM | 配置 SVN 的路径,Maven 将从该路径下将代码取下来。 |
repository | 构建的 WAR 或 EAR 或JAR 文件的位置,或者其他源码构建成功后生成的构件的存储位置。 |
Plugin | 配置 maven-release-plugin 插件来实现自动部署过程。 |
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>bus-core-api</groupId>
<artifactId>bus-core-api</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<!--配置 SVN 的路径,Maven 将从该路径下将代码取下来。-->
<scm>
<url>http://www.svn.com</url>
<connection>scm:svn:http://localhost:8080/svn/jrepo/trunk/
Framework</connection>
<developerConnection>scm:svn:${username}/${password}@localhost:8080:
common_core_api:1101:code</developerConnection>
</scm>
<distributionManagement>
<!--构建的 WAR 或 EAR 或JAR 文件的位置,或者其他源码构建成功后生成的构件的存储位置。-->
<repository>
<id>Core-API-Java-Release</id>
<name>Release repository</name>
<url>http://localhost:8081/nexus/content/repositories/
Core-Api-Release</url>
</repository>
</distributionManagement>
<build>
<!--配置 maven-release-plugin 插件来实现自动部署过程。-->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.0-beta-9</version>
<configuration>
<useReleaseProfile>false</useReleaseProfile>
<goals>deploy</goals>
<scmCommentPrefix>[bus-core-api-release-checkin]-<
/scmCommentPrefix>
</configuration>
</plugin>
</plugins>
</build>
</project>
Maven Release 插件
Maven 使用 maven-release-plugin 插件来完成以下任务。
mvn release:clean
清理工作空间,保证最新的发布进程成功进行。
mvn release:rollback
在上次发布过程不成功的情况下,回滚修改的工作空间代码和配置保证发布过程成功进行。
执行多种操作:
- 检查本地是否存在还未提交的修改
- 确保没有快照的依赖
- 改变应用程序的版本信息用以发布
- 更新 POM 文件到 SVN
- 运行测试用例
- 提交修改后的 POM 文件
- 为代码在 SVN 上做标记
- 增加版本号和附加快照以备将来发布
- 提交修改后的 POM 文件到 SVN
mvn release:perform
注意事项
使用 Eclipse 构建的时候会出现 run as 中没有 maven package 选项,网上看到这个解决办法。
是因为建的是普通 java 工程,需要把它转换成 maven project。
- 1、右键工程--maven--Disable maven nature
- 2、在当前目录下执行命令(就是有pom.xml文件的那个目录) —— mvn eclipse:clean
- 3、重新转换该工程为maven工程。右键工程--- 'Configure'--- 'Convert to meven project'
小结构建步骤
完全在控制台(CMD)中操作
在路径D:\MVN下 构建项目(mvnTest)
mvn archetype:generate
切换到项目路径,并完成打包,生成target文件
cd D:\MVN\mvnTest
D:\MVN\mvnTest>mvn clean package
切换路径
cd D:\MVN\mvnTest\target\classes
D:\MVN\mvnTest\target\classes>java com.baymax.mvnTest.App
重新编译
D:\MVN\consumerBanking>mvn clean compile
在执行
java -cp . com.baymax.mvnTest.App