我正在使用Nexus OSS 3.x,并且我有一个自定义库,正在使用nexus-staging-maven-plugin部署到Nexus存储库。我使用maven部署目标部署快照。然后,我可以将该快照作为依赖项包含在另一个Maven项目的pom.xml中,并正确解析带时间戳的快照。问题是当我现在尝试在Gradle构建中包括该快照依赖项时,Gradle尝试拉低不正确的版本。我在创建的maven-metadata.xml中注意到,Gradle实际上试图解析my-lib-2.0.0-20200225.163947-14.jar,而我的Maven构建正确地解析为my-lib-2.0.0-20200225.163945- 13.jar。这是maven-metadata.xml文件中的内容:
<metadata modelVersion="1.1.0">
<groupId>com.mycompany</groupId>
<artifactId>my-lib</artifactId>
<version>2.0.0-SNAPSHOT</version>
<versioning>
<snapshot>
<timestamp>20200225.163947</timestamp>
<buildNumber>14</buildNumber>
</snapshot>
<lastUpdated>20200225163947</lastUpdated>
<snapshotVersions>
<snapshotVersion>
<classifier>sources</classifier>
<extension>jar</extension>
<value>2.0.0-20200225.163945-13</value>
<updated>20200225163947</updated>
</snapshotVersion>
<snapshotVersion>
<extension>jar</extension>
<value>2.0.0-20200225.163945-13</value>
<updated>20200225163947</updated>
</snapshotVersion>
<snapshotVersion>
<extension>pom</extension>
<value>2.0.0-20200225.163945-13</value>
<updated>20200225163947</updated>
</snapshotVersion>
</snapshotVersions>
</versioning>
</metadata>
我想出了问题所在。原来我正在使用的nexus-staging-maven-plugin引起了这一问题。我从pom.xml中删除了该插件(如下所示),并默认使用标准的maven-deploy-plugin,它解决了版本差异(也如下所示):
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>${nexus-staging-plugin.version}</version>
<executions>
<execution>
<id>default-deploy</id>
<phase>deploy</phase>
<goals>
<goal>deploy</goal>
</goals>
</execution>
</executions>
</plugin>
删除了上述特定于Nexus的插件后,我现在在快照上获得了一致的时间戳和内部版本号。
<metadata modelVersion="1.1.0">
<groupId>com.mycompany</groupId>
<artifactId>my-lib</artifactId>
<version>2.0.0-SNAPSHOT</version>
<versioning>
<snapshot>
<timestamp>20200225.174453</timestamp>
<buildNumber>22</buildNumber>
</snapshot>
<lastUpdated>20200225174453</lastUpdated>
<snapshotVersions>
<snapshotVersion>
<extension>jar</extension>
<value>2.0.0-20200225.174453-22</value>
<updated>20200225174453</updated>
</snapshotVersion>
<snapshotVersion>
<extension>pom</extension>
<value>2.0.0-20200225.174453-22</value>
<updated>20200225174453</updated>
</snapshotVersion>
<snapshotVersion>
<classifier>sources</classifier>
<extension>jar</extension>
<value>2.0.0-20200225.174453-22</value>
<updated>20200225174453</updated>
</snapshotVersion>
</snapshotVersions>
</versioning>
</metadata>