【问题标题】:how to automate the snapshot versions in maven 3如何在 Maven 3 中自动化快照版本
【发布时间】:2013-05-15 06:55:29
【问题描述】:

我有两个项目,即 Abc 和 DEF。现在项目 DEF 具有项目 Abc 的依赖关系。每天我们使用运行 Jenkins 构建。项目 Abc 工件将部署到 Nexus。项目 DEF 必须使用由项目 Abc 创建的 nexus 目录中的最新快照。

我不应该每次都更改项目 DEF pom.xml 文件以从项目 Abc 中获取最新版本。我怎样才能实现这个自动化过程。

顺便说一句,我使用buildnumber-maven-plugin 在项目 Abc 中进行自动版本增量。

【问题讨论】:

  • 请粘贴您对Abc 的依赖,它存在于DEF 中。
  • buildnumber-maven-plugin 是错误的方式。 SNAPSHOT 是正确的方法。

标签: jenkins maven-3 nexus


【解决方案1】:

我假设你的 DEF 的 pom.xml 中有类似的东西

<dependency>
        <groupId>some.group.id</groupId>
        <artifactId>Abc</artifactId>
        <version>1.00.000-SNAPSHOT</version>
        <scope>compile</scope>
</dependency>

这样,只要在 Jenkins 中将 Abc 和 DEF 都配置为 Maven-Jobs,CI-Server 应该在每次构建 Abc 的 SNAPSHOT 时注意到并因此触发新的 DEF 构建(当然,除非, CI-Server 旁边的某个人正在构建 SNAPSHOT 并将其部署到 Nexus 存储库,这不应该发生。)

如果您想强制始终使用 Nexus 存储库中的最新快照,您可以将 Option -U 添加为 Maven 选项。

【讨论】:

  • 最好使用 Maven 中的默认约定,例如 1.0.0-SNAPSHOT 并且范围 compile 是默认值,因此无需明确说明.
  • 但是我怎样才能只让 Abc 给我快照版本而不是其他版本?
  • @khmarbaise:我总是忘记事物的默认值,所以我养成了在有时也会使用非默认设置的地方明确声明默认值的习惯 :)
  • @Mayilarun:我不确定我是否理解您的问题。您为每个依赖项声明一个如上所述的依赖项块。因此,您将 Snapshot 用于 Abc,而将发布的版本用于其他所有内容。
猜你喜欢
  • 2010-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-09
  • 2013-11-26
  • 1970-01-01
  • 2020-03-11
  • 1970-01-01
相关资源
最近更新 更多