Maven nexus v = LATEST不工作

时间:2013-01-04 22:08:33

标签: maven repository nexus

我有maven nexus本地存储库,在运行时我从maven repo下载/获取jar / war文件并将其复制到tomcat。 我正在使用以下网址来下载jar / war文件。

http://localhost/maven/nexus/service/local/artifact/maven/redirect?r=releases&g=com.rdc.app&a=rum&v=LATEST&p=war&c

当我通过param v = 1.2.4我可以下载特定版本的战争,如果我想要最新版本,我发现v = LATEST将在回购中返回最新版本的jar / war文件。

问题是maven repo的最新版本是12.53.3当我使用v = LATEST它正在下载12.46.1 i再次更新12.53.3并再次尝试v = LATEST但结果与以前相同。

如果最新的jar是SNAPSHOT,那么释放jar / war v = LATEST只支持发布版本。

我尝试了以下文档,但似乎无效。

repository.sonatype.org/nexus-core-documentation-plugin/core/docs/rest.artifact.maven.redirect.html

3 个答案:

答案 0 :(得分:6)

如果你问我,这是一个错误。我也面对过它。

基本上,LATEST版本并不意味着1.2.3中的“最新版本”与1.2.2相比,它意味着“最近部署的工件的版本”。所以 - 如果你有一个以上的项目分支,并且你的持续集成服务器正在部署工件,你就不能信任LATEST。

更新:检查Tari aka Manga的回复,了解Nexus中的更新行为。

答案 1 :(得分:4)

这个问答现在已经6岁了。请注意,sonatype有一个新版本的Nexus,后面有一个修改后的版本。

以下是有关计划任务的文档的更新链接,其中一个是“重建Maven元数据文件”:

原始答案

听起来像元数据问题。 Nexus有一个scheduled task,可用于重建存储库的元数据。

答案 2 :(得分:2)

有些人提出建议(例如:@carlspring)" LATEST"实际上并没有指出可用的最高版本,考虑到版本和快照;他们建议是最近部署的,但我不同意。 这就是Sonatype Nexus™2.11.2-0所发生的事情:

假设开始于:

<metadata modelVersion="1.1.0">
    <groupId>com.acme</groupId>
    <artifactId>versioningtest</artifactId>
    <versioning>
        <latest>1.0.3-SNAPSHOT</latest>
        <release>1.0.1</release>
        <versions>
            <version>1.0.0-SNAPSHOT</version>
            <version>1.0.0</version>
            <version>1.0.1-SNAPSHOT</version>
            <version>1.0.1</version>
            <version>1.0.2-SNAPSHOT</version>
            <version>1.0.3-SNAPSHOT</version>
        </versions>
        <lastUpdated>20150928081006</lastUpdated>
    </versioning>
</metadata>

(A) 发布新的1.0.2-SNAPSHOT只会增加&#34; lastupdated&#34;时间戳,它不会更改&#34;最新的&#34;。

现在发布1.0.3:

<metadata>
    <groupId>com.acme</groupId>
    <artifactId>versioningtest</artifactId>
    <versioning>
        <latest>1.0.3</latest>
        <release>1.0.3</release>
        <versions>
            <version>1.0.0-SNAPSHOT</version>
            <version>1.0.0</version>
            <version>1.0.1-SNAPSHOT</version>
            <version>1.0.1</version>
            <version>1.0.2-SNAPSHOT</version>
            <version>1.0.3-SNAPSHOT</version>
            <version>1.0.3</version>
        </versions>
        <lastUpdated>20150928081408</lastUpdated>
    </versioning>
</metadata>

(B) 从这里开始,发布新的1.0.2-SNAPSHOT只会增加&#34; lastupdated&#34;时间戳,它不会更改&#34;最新&#34;。 另外,发布1.0.2只会增加&#34; lastupdated&#34;时间戳,它不会更改&#34;最新&#34;:

<metadata>
    <groupId>com.acme</groupId>
    <artifactId>versioningtest</artifactId>
    <versioning>
        <latest>1.0.3</latest>
        <release>1.0.3</release>
        <versions>
            <version>1.0.0-SNAPSHOT</version>
            <version>1.0.0</version>
            <version>1.0.1-SNAPSHOT</version>
            <version>1.0.1</version>
            <version>1.0.2-SNAPSHOT</version>
            <version>1.0.2</version>
            <version>1.0.3-SNAPSHOT</version>
            <version>1.0.3</version>
        </versions>
        <lastUpdated>20150928081620</lastUpdated>
    </versioning>
</metadata>

总之:

  • 在两个快照之间,即使年轻人更近,最老的出版物也会赢得最新版本,如果版本更高的话。 (A)

  • 发布Vs快照之间的
  • ,更高版本赢得了LATEST点。 (B)

因此,Sonatype Nexus™2.11.2-0,&#34; LATEST&#34;指向可用的最高版本,考虑到版本和快照。

Q.E.D。