dma*_*a_k 12 maven maven-release-plugin versions-maven-plugin
如果Maven大师社区可以帮助我完成以下任务,那将是很棒的.
我想以一种方式自动化Hudson中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>
Run Code Online (Sandbox Code Playgroud)
在标记模块之前转换为:
<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>
Run Code Online (Sandbox Code Playgroud)
在发布成功后转化为:
<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>
Run Code Online (Sandbox Code Playgroud)
我觉得它需要混合使用
versions:use-releases scm:commit release:prepare release:perform versions:use-latest-snapshots scm:commit
但我不确定这样做的最佳方法是什么.特别是尽可能减少提交是很好的:难度是reparationGoals
在-SNAPSHOT
版本检查后运行.
在某种意义上,所描述的项目不是一个多模块项目,因为父POM没有通过它来引用它的子项<modules>
.SCM结构如下:
.
|
+-- myproject-parent
| +-- pom.xml
+-- myproject-api
| +-- pom.xml
+-- myproject-impl
+-- pom.xml
Run Code Online (Sandbox Code Playgroud)
依赖关系是:
myproject-api ? myproject-parent
myproject-impl ? myproject-parent
myproject-impl ? myproject-api
Run Code Online (Sandbox Code Playgroud)
该项目的父POM(myproject-parent
)很少发布,因此将首先发布.然后myproject-api
(如果需要)然后myproject-impl
.
您遇到的一个简单问题是您的父项具有与您的孩子不同的版本号,这对于多元模块构建来说是错误的方式.多模块构建旨在具有许多相关的模块,这些模块具有相同的发布过程,从中具有相同的版本号.如果您遵循该指南,则不需要版本插件,您只需通过发行版进行发布:prepare和release:perform就是这样.
更新: 在进一步讨论之后,我建议设置一组新的Hudson作业,其中包含模块之间的依赖关系(下游/上游deps.)并在每个hudson作业上执行一个释放,触发作业字符串中的下一个等等.这个先决条件是在版本控制中也有单独的模块和单独的区域.否则这场战斗将与Maven失去并使生活复杂化.
归档时间: |
|
查看次数: |
2513 次 |
最近记录: |