我正在设置Hudson使用批处理任务插件来对我们的内部存储库执行maven发布。我是通过以下方式完成的:
mvn --batch-mode release:prepare
mvn --batch-mode release:perform
我对人们使用的其他方法以及这些方法的优缺点感兴趣。此外,任何陷入困境的人都会遇到。
答案 0 :(得分:8)
由于一些原因,我总是手工完成发布。首先,如果你必须回滚它,当你可以回到原始版本位置并执行它时会更容易。其次,因为您需要解决所有快照依赖关系作为该过程的一部分。
我们的开发过程让我们将依赖关系保留在先前版本的当前版本之外,直到修复需要升级。这意味着,如果我发布Nexus,Maven等,那么我会看到快照,这意味着我必须首先发布这些快照。这个过程实际上不可能自动化,因为它根据自上次发布以来的变化而变化。
那就是说,我们有一个特殊的机器(在Sonatype它只是一个虚拟机)只为构建设置。这样做是为了保证不会发生可能会意外影响构建的环境变化(如jdk更改)。它还使任何人都可以更容易地接受发布过程,因为它随时可以使用。
答案 1 :(得分:2)
最近,一个m2release插件引起了我的注意。看起来不错。虽然,我希望我的发布过程完全是“免费调整”。我的意思是我们必须提供4个输入参数来处理完整版本:
前2个具有可接受的默认值。错误修复版数字的版本对我来说非常好。
可以在pom中指定4号。它不会改变。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<tagBase>https://example.com/svn/myProject/releases</tagBase>
</configuration>
</plugin>
这是第三个阻止我按下按钮完全自动化发布的第三个。默认的发布标记标签不会为我们执行,因此我们必须指定它:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<tag>release-${pom.version}</tag>
<tagBase>https://example.com/svn/myProject/releases</tagBase>
</configuration>
</plugin>
现在,虽然这可能正是我所需要的,但最终我的svn标签最后带有-SNAPSHOT。 :(所以我必须在Hudson作业配置中传递tag参数。此外,我必须为我们制作的每个版本更改它...这不是我需要的。
所以,最后,在hudson + m2release hudson插件+正确配置的maven发布插件中有一个maven2类型的项目是迄今为止我见过的所有发布过程的母亲。虽然不完美,但它为我节省了大量工作。
JS。
答案 2 :(得分:0)
我总是手动触发一个明显的优点和缺点: - )
答案 3 :(得分:0)
我们一直在试验Hudson Maven发布插件,虽然我有点挑战它是否正确地归功于发布,没有像我们的构建文件中硬编码密码这样的恶意。