繁体   English   中英

确保 Maven 拉取最新版本

[英]Ensure Maven pulls latest version of release

这个问题与其他“检查最新依赖版本”类型的问题有点不同。

假设我们有一个项目DepProjA ,它为我们的其他 Java 应用程序构建和发布一个工件,以作为依赖项导入。 例如, AppProj1在其 pom.xml 文件中将DepProjA列为依赖项。

<dependency>
  <groupId>com.mycompany.depproj</groupId>
  <artifactId>depproja-lib</artifactId>
  <version>feature-addthisfeature</version>
</dependency>

您可能会注意到,DepProjA 发布了此 JAR 的“功能”版本,其版本以工作分支名称命名。 这样其他团队可以在这些特定功能更新作为正式版本更新发布之前对其进行测试。 如果发现错误并将修复推送到同一分支下,则会更新“功能”工件。 但是,当我们重建AppProj1以尝试提取和利用最新的工件时,它似乎正在使用以前的本地版本。

在 pom.xml 或 mvn CLI 选项中是否有一个选项,以便 maven 将始终下拉最新的工件而不是使用缓存的任何版本? 我知道我可以做一个“一揽子方法”,比如清除缓存等,但要寻找针对特定依赖项的东西。 有点类似于 Docker 图像,其中标签本身不会更改,但是当发布该标签的新版本时,可以更新底层 SHA。

我什至不知道的另一种想法是可能的:发布工件时,有没有办法添加我可以参考的自定义元数据或标签? 例如,我添加了一个“cicdlabel”,它可以引用发布最新版本的管道 ID。 然后,当我知道有更改时,我可以在应用程序的依赖信息中更改它:

<dependency>
  <groupId>com.mycompany.myproject</groupId>
  <artifactId>myproject-lib</artifactId>
  <version>feature-addthisfeature</version>
  <cicdlabel>12345</cicdlabel>
</dependency>

在 Maven 中,按设计发布的工件是不可变的。 您不能在 Maven 中央更新相同版本的工件。

它确保您的构建是可重现的,当我们更改已发布工件的内容时,相同的构建可能会在未来中断。

在您的情况下,您应该为您的工件使用SNAPSHOT版本,并且可以更新SNAPSHOT版本。

您可以在 settings.xml 中为您的存储库配置使用updatePolicy

你可以使用mvn -U..来更新每个版本的SNAPSHOT版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM