Maven的:为什么-SNAPSHOT后缀从神器的文件名失踪?(Maven: Why is the

2019-07-19 21:18发布

我的Maven构件被部署到一台Nexus快照库。 在那里,它被存储在正确的目录,但它的文件名有以下模式:

mylibrary-1.0-20130213.125827-2.jar

然而,Maven的无法下载该快照。 根据错误日志,Maven的似乎期待以下文件名:

mylibrary-1.0-SNAPSHOT.jar

这些都是在我的POM库设置:

<repositories>
    <repository>
        <id>mycompany-all</id>
        <url>https://servername/nexus/content/groups/mycompany/</url>
    </repository>
</repositories>

<distributionManagement>
    <repository>
        <id>mycompany-releases</id>
        <url>https://servername/nexus/content/repositories/releases/</url>
    </repository>
    <snapshotRepository>
        <id>mycompany-snapshots</id>
        <url>https://servername/nexus/content/repositories/snapshots/</url>
    </snapshotRepository>
</distributionManagement>

注:关系组中同时包含releasessnapshots回购。

我没有配置这些回购settings.xml -是什么问题? 或者还有什么我做错了?

Answer 1:

您发布(该模式mylibrary-1.0-20130213.125827-2.jar )是一个独特的快照版本。 Maven的3强迫你使用这种类型的神器命名的,但在Maven的2它可以与诸如声明防止:

<distributionManagement>
  ...
  <snapshotRepository>
    ...
    <uniqueVersion>false</uniqueVersion>
  </snapshotRepository>
  ...
</distributionManagement>

要在项目中使用特定的快照,其声明如下:

<dependency>
  <groupId>com.foo</groupId>
  <artifactId>mylibrary</artifactId>
  <version>1.0-20130213.125827-2</version>
</dependency>

要使用最新的已知快照,声明它“旧式”:

<dependency>
  <groupId>com.foo</groupId>
  <artifactId>mylibrary</artifactId>
  <version>1.0-SNAPSHOT</version>
</dependency>

您可能会发现这个问题的答案类似的问题有帮助。



Answer 2:

我把它通过添加库来工作settings.xml是这样的:

<repositories>
    <repository>
        <id>mycompany-releases</id>
        <url>https://servername/nexus/content/repositories/releases/</url>
        <releases><enabled>true</enabled></releases>
        <snapshots><enabled>false</enabled></snapshots>
    </repository>
    <repository>
        <id>mycompany-snapshots</id>
        <url>https://servername/nexus/content/repositories/snapshots/</url>
        <releases><enabled>false</enabled></releases>
        <snapshots><enabled>true</enabled></snapshots>
    </repository>
</repositories>

然后,快照jar文件被下载就好了。 我怀疑,当Maven知道它有一个快照回购交易,它会尝试既没有uniqueVersion(见邓肯·琼斯的答案)。

请注意,在我们的情况下,这些块必须被复制为pluginRepositories因为我们有定制的Maven插件。



文章来源: Maven: Why is the -SNAPSHOT suffix missing from artifact file name?