Jenkins将工件部署到Artifactory。maven-metadata.xml显示的版本不正确,不显示快照的版本

Jenkins将工件部署到Artifactory。maven-metadata.xml显示的版本不正确,不显示快照的版本,maven,jenkins,artifactory,Maven,Jenkins,Artifactory,我是Jenkins和Artifactory的新手,我一直无法解决这个问题。我正在使用Jenkins 2.32.1、Artifactory 4.14.0、Jenkins Artifactory插件2.9.0和Maven 2。我正在使用詹金斯管道建造 这是我的jenkins文件: node('default') { try{ def server = Artifactory.newServer url: 'https://artifactory.com/artifactory

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

这是我的
jenkins文件

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'
    }
}
我的人工回购看起来像:

  • 我的本地回购协议
    • 8(发行版)
    • 11-20170126.182450-1(快照版本)
    • maven-metadata.xml
以下是快照版本的my
pom.xml
中的一个片段:

<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>
我的问题是,
maven metadata.xml
文件将快照版本列为其最新发布版本,并且(Artifactory?)无法识别
11-20170126.182450-1
版本实际上是快照版本

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


提前谢谢你!我非常感谢对这个问题的任何建议或见解

我的问题在@Tunaki对我的问题的评论中得到了回答。我在pom.xml中使用范围来引用我的文章中提到的存储库中的工件。我切换到使用确切的版本号,它现在工作正常

为什么要这样做?这是预期的行为。(这就是为什么在Artifactory中,您应该将快照存储库与发布存储库分开。)此快照版本的实际问题是什么?@Tunaki快照版本创建得很好。当此repo作为我的另一个repo的依赖项列出时,maven-metadata.xml文件会导致问题。当它试图从这个repo获取最新版本时,它试图获取快照版本(11-…),而不是发布版本(8)。从maven元数据文档中可以看出,my.xml中的最新和发布标记应该是8,并且还应该包含快照版本的标记。这是供参考的文档:这也是正常的,如果您使用范围来获取最新版本。。。根据设计,它包括快照。在这里阅读更多@Tunaki我没有意识到这些是预期的行为。我从使用范围来获取最新版本切换到使用确切的数字。谢谢是 啊版本范围是非常棘手的,也许最好完全避免它们。。。
<?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>