初识 maven 自动化发布
mvn deploy 配置
maven settings.xml 文件中添加如下配置,用来在 deploy 项目时跟仓库做认证,其中 <server>
标签中的 id 必须跟 pom.xml 文件中 <distributionManagement>
下仓库的 id 一致:
<server>
<id>releases</id>
<username>admin</username>
<password>123456</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>123456</password>
</server>
项目的 pom.xml 文件中添加如下配置:
<distributionManagement>
<!-- 项目 release 版本发布仓库地址 -->
<repository>
<id>releases</id>
<name>Release Repository</name>
<url>http://localhost:8081/nexus/content/repositories/releases/</url>
</repository>
<!-- 项目 snapshot 版本发布仓库地址 -->
<snapshotRepository>
<id>snapshots</id>
<name>Snapshots Repository</name>
<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
发布
配置完成之后执行以下命令就能将项目发布到指定的仓库中:
mvn clean deploy
mvn release 配置
maven 提供了发布项目 release 版本的插件,在上面的配置基础上再增加以下配置即可启用:
<scm>
<!-- 只读项目地址 -->
<connection>scm:git:git@gitee.com:example/example.git</connection>
<!-- 可读写项目地址 -->
<developerConnection>scm:git:git@gitee.com:example/example.git</developerConnection>
<!-- 项目查看地址 -->
<url>http://gitee.com/example/example</url>
<!-- 指定项目当前所处 tag,HEAD 需要作为默认值 -->
<tag>HEAD</tag>
</scm>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<!-- 发布 release 版本时提交内容的前缀,主要是为了符合版本管理中的提交规范 -->
<scmCommentPrefix>release(all):</scmCommentPrefix>
<!-- 发布 release 时 tag 名称的格式定义 -->
<tagNameFormat>v@{project.version}</tagNameFormat>
<!-- 子模块使用与父模块一致的发布版本和新的 SNAPSHOT 版本 -->
<autoVersionSubmodules>true</autoVersionSubmodules>
<!-- 标签基础目录 -->
<tagBase>http://gitee.com/example/example/tags</tagBase>
</configuration>
</plugin>
</plugins>
</build>
发布 release
在项目 pom.xml 文件中添加以上配置之后就可以使用 maven release 插件发布项目了。
-
准备发布版本,如果检测到有未提交的代码或者 snapshot 版本的依赖会报错,正常情况下会提示用户输入想要发布的版本号,标签名称以及最新的快照版本
mvn release:prepare
-
如果上一步发现有信息填错可以使用 rollback 命令回滚,有一点要注意,git 中的标签不会删除,需要手动删除本地和远程的标签
mvn release:rollback
-
如果 prepare 没有问题则执行将刚生成的标签中的代码 deploy 到仓库中
mvn release:perform