首页 > 解决方案 > Gradle 构建解析 Maven2 快照的方式与 Maven 构建不同

问题描述

我正在使用 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>

标签: mavengradlenexus

解决方案


我弄清楚了问题所在。事实证明,我使用的 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>

推荐阅读