Maven 2 Maven自动快照更新
假设我有一个项目具有以下POM:Maven 2 Maven自动快照更新,maven-2,maven,Maven 2,Maven,假设我有一个项目具有以下POM: <groupId>com.mine</groupId> <artifactId>coreJar</artifactId> <packaging>jar</packaging> <version>0.0.1-SNAPSHOT</version> 但我无法让它与“-快照”一起工作: 接下来的问题是如何让maven在我的另一个项目中获取最新快照?使用 mvn-U,--更新
<groupId>com.mine</groupId>
<artifactId>coreJar</artifactId>
<packaging>jar</packaging>
<version>0.0.1-SNAPSHOT</version>
但我无法让它与“-快照”一起工作:
接下来的问题是如何让maven在我的另一个项目中获取最新快照?使用
mvn-U,--更新快照
强制检查远程存储库上的更新版本和快照
Maven有一个插件,它允许您将pom更新到可见存储库中最新最棒的快照。它通过检查pom并与远程存储库进行比较,然后根据需要进行修改来实现这一点
这是一个有用的工具,但我绝对希望看到一个与不推荐的最新选项等效的工具。我发现这种依赖在持续集成场景中特别有用。关于依赖范围和快照依赖的几句话(引用设计文档): 将快照版本合并到规范中 依赖范围的解析不应解析为快照(开发版本),除非它作为显式边界包含。除非显式使用新特性,否则无需针对开发代码进行编译,在该特性下,快照将成为版本规范的下限。由于版本被认为比它们所属的快照更新,因此如果找到,将选择它们而不是旧的快照 因此,为了回答您的问题,使用具有依赖范围的快照的唯一方法是作为边界,并且您不会通过设计自动获得更高的快照版本(这确实有意义) 就个人而言,我不喜欢使用依赖范围,因为我发现它会导致构建再现性问题,并使构建更加脆弱。我不推荐他们 以防万一,升级快照版本通常意味着您正在发布一些代码,maven release插件为此提供了支持(请参阅)。另一个选项(我使用)是在pom.xml中包含以下内容。updatePolicy标记将强制maven始终使用此repo中的最新快照
<repositories>
<repository>
<id>you-snapshots</id>
<url>http://host/nexus/repos/snapshots</url>
<snapshots>
<updatePolicy>always</updatePolicy>
</snapshots>
<releases>
<updatePolicy>always</updatePolicy>
</releases>
</repository>
</repositories>
你的快照
http://host/nexus/repos/snapshots
总是
总是
p、 我总是在pom.xml中配置所有repo,因为我们使用多个CI服务器,并且很难配置所有这些服务器(我很懒…)
请参阅文件。
下载更新的频率-可以是“始终”、“每日”(默认)、“间隔:XXX”(分钟)或“从不”(仅当它在本地不存在时)。
如果您想在Eclipse内部更新快照版本(使用m2e/m2eclipse时),右键单击受影响的项目,然后选择“Maven”->“更新项目…”->“确定”(所选项目导致问题)。使用mvn安装-U
您必须使用此命令强制maven获取最新快照
<version>[0.0-SNAPSHOT,)</version>
[0.0-SNAPSHOT,)
我想问题是如何更新到最新的快照,而不仅仅是更新到最新的0.0.1-SNAPSHOT,这是-U会做的。@草莓:我看不到任何合理的解释来解释0.0.1-SNAPSHOT
如何成为0.0.2-SNAPSHOT
或任何其他更高版本。看看这里:我发现这种依赖性特别很有害。@Pascal:你能举例说明什么是“依赖范围作为显式边界”吗?它是[0.01000.0]“快照<代码> >例如,您的帖子中的@ PasCalthIVENT链接很难被任意删除。谢谢。这是一个更新本地存储库的干净方法,它可能随时都会发生变化。为什么Eclipse不考虑Stutux.xml的Update Engult=永远设置?它是有意的还是Maven Eclipse插件的bug?
[0.0.1,)-SNAPSHOT // Doesn't work!
<repositories>
<repository>
<id>you-snapshots</id>
<url>http://host/nexus/repos/snapshots</url>
<snapshots>
<updatePolicy>always</updatePolicy>
</snapshots>
<releases>
<updatePolicy>always</updatePolicy>
</releases>
</repository>
</repositories>
<version>[0.0-SNAPSHOT,)</version>