【问题标题】:Gradle build resolves Maven2 snapshots differently than a Maven buildGradle 构建解析 Maven2 快照的方式与 Maven 构建不同
【发布时间】:2020-06-09 12:08:04
【问题描述】:

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

【问题讨论】:

    标签: maven gradle nexus


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      相关资源
      最近更新 更多