如果 Maven 大师社区可以帮助我完成以下任务,那就太好了。
我想以批处理模式运行发布过程的方式自动化哈德逊中 Maven 模块的发布过程(不需要从控制台询问任何内容)。目前我使用通用步骤release:prepare
(<preparationGoals>versions:update-parent clean verify</preparationGoals>
在提交之前将父级更新到最新版本)+ release:perform
. 但是我希望 Maven 执行以下操作:
在准备步骤中的某个时候:
groupId
对于与当前模块和父模块匹配的所有依赖项,替换-SNAPSHOT
为发布版本(例如versions:use-releases -Dincludes=???
)。
发布后的某个时候:
groupId
对于与当前模块和父模块匹配的所有依赖项,将发布版本替换为-SNAPSHOT
版本(例如versions:use-latest-snapshots ...
)。
例子:
<parent>
<groupId>org.mycompany.myproject</groupId>
<artifactId>myproject-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>myproject-api</artifactId>
<version>1.1-SNAPSHOT</version>
</dependency>
在模块被标记之前转换为:
<parent>
<groupId>org.mycompany.myproject</groupId>
<artifactId>myproject-parent</artifactId>
<version>1.0</version>
</parent>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>myproject-api</artifactId>
<version>1.1</version>
</dependency>
并在发布成功后转化为:
<parent>
<groupId>org.mycompany.myproject</groupId>
<artifactId>myproject-parent</artifactId>
<version>1.1-SNAPSHOT</version>
</parent>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>myproject-api</artifactId>
<version>1.2-SNAPSHOT</version>
</dependency>
我觉得它需要混合
versions:use-releases scm:commit release:prepare release:perform versions:use-latest-snapshots scm:commit
但我不确定这样做的最佳方法是什么。尤其是尽可能少的提交会很好:困难在于在版本检查reparationGoals
之后运行。-SNAPSHOT
所描述的项目不是一个多模块项目,因为父 POM 没有通过<modules>
. 单片机结构如下:
.
|
+-- myproject-parent
| +-- pom.xml
+-- myproject-api
| +-- pom.xml
+-- myproject-impl
+-- pom.xml
依赖项是:
myproject-api → myproject-parent
myproject-impl → myproject-parent
myproject-impl → myproject-api
项目的父 POM ( myproject-parent
) 将很少发布,因此将首先发布。然后myproject-api
(如有必要)然后myproject-impl
。