使用声明性管道将项目 Jar 作为 maven 工件发布到 Jfrog Artifactory

Posted

技术标签:

【中文标题】使用声明性管道将项目 Jar 作为 maven 工件发布到 Jfrog Artifactory【英文标题】:Publish project Jar as maven artifacts to Jfrog Artifactory using Declarative Pipeline 【发布时间】:2021-03-01 07:07:47 【问题描述】:

我正在开发一个声明性 Jenkins 管道脚本,以构建工件并将其发布到 JFrog Artifactory。 我们只有一个项目存储库,服务位于 services 文件夹下。所有服务都有自己的 pom.xml 。只有在服务的各个目录结构中检测到更改时,我们才需要编写脚本到管道脚本来构建工件并将其发布到 JFrog。 根据客户,我们不能为每个服务拥有单独的存储库。这里的问题是,使用以下脚本(使用 rtUpload)我无法将工件 作为 maven 工件(组 ID、工件 ID 和版本号)发布到工件。请求您的帮助。

项目结构如下。

trinad(repository)
|
|-----/java/services/customer_quote/pom.xml
|
|-----/java/services/customer_rate/pom.xml
|
|-----/java/services/customer_renew/pom.xml

pipeline
   agent any
   tools
       jdk 'JDK'
       maven 'Maven'
   
   stages
     stage('Build')
        when 
          anyOf
                changeset '**/services/customer_quote/**'
          
        
        steps
         sh 'mvn -v'
         sh 'mvn -f java/services/customer_quote/pom.xml' clean install
        
        when 
          anyOf
                changeset '**/services/customer_rate/**'
          
        
        steps
         sh 'mvn -v'
         sh 'mvn -f java/services/customer_rate/pom.xml' clean install
        
   
     
     stage('publish')
      when 
          anyOf
                changeset '**/services/customer_quote/**'
          
        
        steps
            rtUpload
              serverId:'Artifactory',
              spec:'''
               "files":[
                
                    "pattern":"/services/customer_quote/target/customer-quote-*.jar",
                    "target": "trinad"/$BUILD_NUMBER/"    
                ]
              
            
        
        
        //publish steps for other services goes here
      
   

【问题讨论】:

您是否尝试使用maven deploy 而不是rtUpload 【参考方案1】:

我建议使用wiki 中提到的基于 Maven 的作业并对其进行测试。当您尝试使用“mvn”客户端构建并使用 rtUpload 部署到 Artifactory 时,我怀疑这是否正确。您可以先尝试使用 mvn deploy,也可以使用上面 wiki 中提到的管道设置管道。

可在此 JFrog 的Github 下找到声明性脚本的示例 JenkinsFile。可能使用 rtMavenRun 应该有助于构建和部署文件。

【讨论】:

以上是关于使用声明性管道将项目 Jar 作为 maven 工件发布到 Jfrog Artifactory的主要内容,如果未能解决你的问题,请参考以下文章

如何将本地项目(不是 jar)作为依赖项添加到 Maven 项目

如何配置maven pom文件来解决jar包冲突

本地maven库jar包间断性丢失问题?

如何把maven本地仓库的jar删掉

如何从 maven 项目中自动排除未使用的 jar 文件?

[Maven实战]传递性依赖