Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 2 Maven自动快照更新_Maven 2_Maven - Fatal编程技术网

Maven 2 Maven自动快照更新

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,--更新

假设我有一个项目具有以下POM:

<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>