插件的场景是什么?
在实际工作中,都是基于SNAPSHOT版本进行开发的,开发完毕需要发布一个对应的RELEASE版本,然后再将当前的最新代码版本更新为下一个SNAPSHOT版本,如果手动完成这些工作还是比较麻烦的,而该插件解决了以上提到的所有问题。也就是说该插件完成版本了从1.0-SNAPSHOT到1.0再到1.1-SNAPSHOT的处理。
插件执行流程是什么?
①。 检查本地有无未提交的代码; ②。 检查项目是否有快照版本依赖; ③。 执行单元测试,生成API文档; ④。 在本地和远程库的GIT中打上对应版本的tag; ⑤。 将SNAPSHOT版本升级为release版本,发布release版本到指定私服上; ⑥。 修改pom版本为新的SNAPSHOT版本(之前快照版本的下一个版本),基于修改后的POM执行MAVEN构建,提交POM变更。插件的目标有哪些?
maven-release-plugin主要有三个目标:
插件目标 | 描述 | 命令 |
---|---|---|
release:prepare | 准备版本发布,主要是变更POM的内容、创建TAG | mvn release:prepare |
release:rollback | 回退所有版本准备阶段的操作 | mvn release:rollback |
release:perform | 执行版本发布 | mvn release:perform |
如何修改POM配置?
需要在整个工程的父POM中添加/修改为以下内容:
<scm>
<url>https://github.com/hongwen1993/fast-drools-spring-boot-starter</url>
<connection>
scm:git:https://github.com/hongwen1993/fast-drools-spring-boot-starter
</connection>
<developerConnection>
scm:git:git@github.com/hongwen1993/fast-drools-spring-boot-starter.git
</developerConnection>
</scm>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<!-- 是否允许带时间戳的 SNAPSHOT 依赖项。 默认false-->
<allowTimestampedSnapshots>true</allowTimestampedSnapshots>
<!--是否为子版本分配父亲版本号,默认false-->
<autoVersionSubmodules>true</autoVersionSubmodules>
<tagNameFormat>v@{project.version}</tagNameFormat>
<generateReleasePoms>false</generateReleasePoms>
<arguments>-DskipTests</arguments>
</configuration>
</plugin>
</plugins>
</build>
<!--分发配置-->
<distributionManagement>
<repository>
<id>releases</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
从1.0-SNAPSHOT到1.0再到1.1-SNAPSHOT的处理
在父POM中配置完毕后,仅仅需要执行以下两条命令即可完成:
mvn release:prepare
mvn release:perform