【发布时间】:2009-12-16 13:00:00
【问题描述】:
我有一个远程存储库,它在 5 小时内更新 jar 一次而不更改版本号。Pom 文件无法更新,因为版本相同。每次我需要手动删除。有什么办法可以得到使用 settings.xml 的最新文件。
【问题讨论】:
标签: maven-2
我有一个远程存储库,它在 5 小时内更新 jar 一次而不更改版本号。Pom 文件无法更新,因为版本相同。每次我需要手动删除。有什么办法可以得到使用 settings.xml 的最新文件。
【问题讨论】:
标签: maven-2
您控制这个远程存储库吗?如果是,则使用“-SNAPSHOT”版本号。
或者要求控制存储库的人这样做。这是告诉 Maven 依赖项处于不断变化状态的正确方法。
如果您不能/不愿意这样做,请为自己编写一个批处理/shell 脚本来调用 Maven,该脚本会事先删除该文件。
【讨论】:
我有一个远程存储库,它在 5 小时内更新一次 jar,而不更改版本号。 Pom 文件无法更新,因为版本相同。每次我都需要手动删除。有什么方法可以让我使用
settings.xml获取最新文件。
不,没有办法做到这一点。一旦下载了具有固定版本(而不是 SNAPSHOT)的工件,它将不会再次下载,除非您将其从本地存储库中删除。实际上,在不更改其固定版本号的情况下重新发布 jar 是一种 EVIL 做法,必须避免。这不是 maven 的工作方式,并且在执行此操作时,无法预测人们真正使用的是哪个版本(不要求他们从本地存储库中显式删除 jar,这是一种非常薄弱的做法),这将导致不可预测的结果。
处理频繁发布的正确方法是更改版本号(并相应地更新 POM)或使用 SNAPSHOT 版本,这是开发过程中常用的方法。根据定义,如果远程存储库中提供了更新的版本,则将下载 SNAPSHOT 版本。这就是您要寻找的东西,这是管理这种情况的专家方法。更多关于SNAPSHOT的详情,请参见Maven: The Definitive Guide的9.3.1.2. SNAPSHOT Versions章节。
【讨论】:
您可以在 settings.xml 中为存储库设置元素 updatePolicy 为 always:
<profiles>
<profile>
<id>default</id>
<repositories>
<repository>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
<id>snapshots.jboss.org</id>
<name>Snapshot JBoss Repository for Maven</name>
<url>http://snapshots.jboss.org/maven2/</url>
<layout>default</layout>
</repository>
</repositories>
</profile>
</profiles>
【讨论】: