我的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>
注:关系组中同时包含releases
和snapshots
回购。
我没有配置这些回购settings.xml
-是什么问题? 或者还有什么我做错了?
您发布(该模式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>
您可能会发现这个问题的答案类似的问题有帮助。
我把它通过添加库来工作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插件。