我正在设置 Hudson 使用批处理任务插件将 Maven 发布到我们的内部存储库。我通过以下方式做到这一点:

mvn --batch-mode release:prepare
mvn --batch-mode release:perform

我对人们使用过的其他方法以及这些方法的优缺点感兴趣。另外,人们遇到过的任何问题。

有帮助吗?

解决方案

我倾向于手工几个原因总是做发布。首先,如果你要回滚更容易,当你可以回到原来的位置释放和做。其次,因为你需要解决的所有快照依赖作为过程的一部分。

我们的发展过程中我们在以前的发行版本留下的依赖外部当前构建直到修复程序需要升级。这意味着,如果我释放的Nexus,Maven的,等等,然后我看到快照,这意味着我必须去,并且第一释放那些。这个过程是不是真的有可能实现自动化,因为它变化的基础上与上次发布有什么变化。

这是说,我们有一个特殊的机器(在Sonatype的,它只是一个虚拟机)也仅限于建立。这样做是为了保证不会对环境发生变化,可能影响无意中构建(如JDK变化)。这也使得它更容易为任何人拿起释放的过程,因为它总是准备好了。

其他提示

最近,一个 m2release 插件引起了我的注意。看起来不错。尽管如此,我希望我的发布过程完全“无需 pom 调整”。我的意思是我们必须提供 4 个输入参数来处理完整的发布:

  1. 发布版本(例如1.0.0)
  2. 新的开发版本(例如1.0.1-快照)
  3. SCM 中的发布标签(例如版本 1.0.0 或 1.0.0)
  4. SCM中的标签基本路径

前 2 个具有可接受的默认值。版本冲突在错误修复版本数字上对我来说完全没问题。

数字 4 可以在 pom.xml 中指定。它不会改变。

<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 中有一个 maven2 类型的项目 + m2release hudson 插件 + 正确配置的 maven 发布插件是我迄今为止看到的所有发布过程的根源。虽然并不完美,但它为我节省了很多繁琐的工作。

JS。

我一直手动触发的释放具有明显的优点和缺点: - )

我们一直在尝试与哈德森的Maven插件发布,虽然我有点用得到它适当的信贷释放,无恶之类的东西硬编码密码到我们构建文件的挑战。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top