【问题标题】:Jenkins deploying artifacts to Artifactory. maven-metadata.xml shows incorrect version for release and does not show versions for snapshotJenkins 将工件部署到 Artifactory。 maven-metadata.xml 显示不正确的发布版本并且不显示快照版本
【发布时间】:2017-01-26 20:52:06
【问题描述】:

我是 Jenkins 和 Artifactory 的新手,我一直无法解决这个问题。我正在使用 Jenkins 2.32.1、Artifactory 4.14.0、Jenkins Artifactory 插件 2.9.0 和 Maven 2。我正在使用 Jenkins 管道进行构建。

这是我的jenkinsfile

node('default') {
    try{
        def server = Artifactory.newServer url: 'https://artifactory.com/artifactory', credentialsId: 'MYCREADENTIALS'
        def rtMaven = Artifactory.newMavenBuild()


        stage('Checkout') {
            checkout myProject
        }

        stage('Artifactory configuration') {
            rtMaven.tool = 'Default'
            rtMaven.resolver server: server, releaseRepo: 'my-repo-all', snapshotRepo: 'my-repo-all'
            rtMaven.deployer server: server, releaseRepo: 'my-repo-local', snapshotRepo: 'my-repo-local'
        }

        stage('Clean') {
            rtMaven.run pom: 'pom.xml', goals: 'clean '
        }

        stage('Install') {
            def buildInfo = rtMaven.run pom: 'pom.xml', goals: 'install '
            server.publishBuildInfo buildInfo
        }

    } catch (err) {
        echo "Caught: $err"
        currentBuild.result = 'FAILURE'
    }
}

我的 Artifactory 回购看起来像:

  • 我的本地仓库
    • ....
    • 8(发布版本)
    • 11-20170126.182450-1(快照版)
    • maven-metadata.xml

这是来自我的pom.xml 的快照版本的 sn-p:

<groupId>com.my.group</groupId>
<artifactId>my-project-local</artifactId>
<packaging>jar</packaging>
<version>11-SNAPSHOT</version>
<name>${project.artifactId}</name>
<description>my description</description>

这里是mavan-metadata.xml

<?xml version="1.0" encoding="UTF-8"?>
<metadata>
  <groupId>com.my.group</groupId>
  <artifactId>my-project-local</artifactId>
  <version>11-20170126.182450-1</version>
  <versioning>
    <latest>11-20170126.182450-1</latest>
    <release>11-20170126.182450-1</release>
    <versions>
      <version>4</version>
      <version>5</version>
      <version>6</version>
      <version>7</version>
      <version>8</version>
      <version>11-20170126.173903-1</version>
      <version>11-20170126.182450-1</version>
    </versions>
    <lastUpdated>20170126192233</lastUpdated>
  </versioning>
</metadata>

我的问题是maven-metadata.xml 文件将快照版本列为其最新发布版本,而某些东西(Artifactory?)没有识别出11-20170126.182450-1 版本实际上是快照版本。

当此 repo 在我的其他项目的 pom.xml 中列为依赖项时,这会产生问题。当它试图从这个 repo 中获取最新版本时,它会错误地尝试获取快照版本 (11-...) 而不是发布版本 (8)。

提前感谢您!我感谢任何关于这个问题的建议或见解。

【问题讨论】:

  • 为什么要这样?这是预期的行为。 (这就是为什么在 Artifactory 中,您应该将快照存储库与发布存储库分开。)这个快照版本的实际问题是什么?
  • @Tunaki 快照版本创建良好。当此存储库被列为我的其他存储库之一的依赖项时,maven-metadata.xml 文件会导致问题。当它试图从这个 repo 中获取最新版本时,它会尝试获取快照版本 (11-...) 而不是发布版本 (8)。从 maven-metadata 文档中,我的 .xml 中的最新和发布标签似乎应该是 8,它还应该包含快照版本的标签。以下是供参考的文档:maven.apache.org/ref/3.2.5/maven-repository-metadata/…
  • 这也很正常,如果您使用范围来获取最新版本...它包含快照,这是设计使然。在此处阅读更多信息stackoverflow.com/questions/4407055/…
  • @Tunaki 我没有意识到这些是预期的行为。我从使用范围来获取最新版本切换到使用确切数字。谢谢!
  • 是的......版本范围非常棘手,也许最好完全避免它们......

标签: maven jenkins artifactory


【解决方案1】:

@Tunaki 在我的问题的 cmets 中回答了我的问题。我在 pom.xml 中使用范围来引用我帖子中提到的存储库中的工件。我切换到使用确切的版本号,它现在可以正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    相关资源
    最近更新 更多