java - maven 3如何判断快照是否更新?

标签 java maven maven-metadata

我们在内部托管一个简单的 Maven 存储库,但 Maven 似乎没有从中获取新的快照版本。我们的本地 Maven 存储库在 settings.xml 中配置为:

<snapshots>
    <enabled>true</enabled>
    <updatePolicy>always</updatePolicy>
</snapshots>

将其与“mvn -U”之类的内容结合起来,我希望 Maven 能够获取最新的快照版本(如果适用)。据我所知,maven 将检查metadata.xml 的最后修改,并据此确定快照是否已更新。但是我并不完全清楚最后更新的是哪一个。以下面的metadata.xml为例:

<metadata>
<groupId>com.example</groupId>
<artifactId>example-test</artifactId>
<version>1.0-SNAPSHOT</version>
<versioning>
    <versions>
        <version>1.0-SNAPSHOT</version>
    </versions>
    <snapshot>
        <timestamp>20120427.113221</timestamp>
        <buildNumber>1335519141810</buildNumber>
    </snapshot>
    <lastUpdated>20120427113221</lastUpdated>
</versioning>

maven是否使用lastUpdated标签? “最后修改的”http header ? snapshot.timestamp 标签还是其他什么?

无论如何,我们看到的行为是它确实会下载最新的metadata.xml,但会停在那里,它不会重新下载快照本身。

编辑:我注意到,在 Maven 2 中可选的独特快照功能在 Maven 3 中已成为强制性的。是否有可能 Maven 根本没有检测到更新的版本?现在从模块中查看 maven-metadata.xml:

<metadata modelVersion="1.1.0">
<groupId>com.example</groupId>
<artifactId>example-test</artifactId>
<version>1.0-SNAPSHOT</version>
<versioning>
    <snapshot>
        <timestamp>20120607.154257</timestamp>
        <buildNumber>1339076577</buildNumber>
    </snapshot>
    <lastUpdated>20120607154257</lastUpdated>
    <snapshotVersions>
        <snapshotVersion>
            <extension>jar</extension>
            <value>1.0-20120607.154257-1339076577</value>
            <updated>20120607154257</updated>
        </snapshotVersion>
    </snapshotVersions>
</versioning>

maven 会检查内部版本号吗? snapshotVersion 的“updated”标签?

最佳答案

如果您正在本地处理模块并已运行:

mvn 全新安装

这将在您的本地 Maven 存储库中安装一个副本。该 Artifact 将处于锁定状态 - 这意味着 - 除非元数据*xml 已被删除,否则它将不会从远程位置更新。

如果几天后你完成了这个模块的工作并开始处理其他模块,而其他模块又依赖于这个初始模块,那么这将是一件很痛苦的事情,因为它不会选择从远程存储库中更新更改。

已为此提交了一个错误 here 。然而,它不太可能很快得到修复。因此,了解这种行为非常重要。

关于java - maven 3如何判断快照是否更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10927259/

相关文章:

java - 如何强制 Maven 从中央存储库下载 maven-metadata.xml?

java - 有没有办法在 Controller 中初始化变量并在 FXML 中使用它?

java - Netbeans JAR 未正常运行/打开

java - 自定义百分比比例

java - 从 Android 应用程序发送电子邮件

java - 将 Spring Boot 应用程序作为 jar 执行会给出 "no main manifest attribute"

maven - 严重: A child container failed during start java. util.concurrent.ExecutionException : org. apache.catalina.LifecycleException

maven - 如何在 src/test-integration/java 文件夹中的 maven 中运行 UnitTests