簡體   English   中英

如何在Jfrog Artifactory中部署100個jars

[英]How to deploy 100s of jars in Jfrog Artifactory

我正在將 java 項目構建系統從Ant 轉換為 Maven ,實際上有 700 多個依賴 jar 文件位於沒有任何版本或 package 信息的文件夾中。

我能夠使用它的 hash 計算出 jar 文件中 400 多個的 maven 坐標。因此對於剩余的 300 多個 jar 文件,我正在考慮將其直接上傳到 Artifactory 中的本地倉庫,然后自動生成 8833386896712s .

據我所知,實現這一目標的唯一方法是通過 Artifactory UI 手動部署/上傳每個jar文件,並啟用Deploy as Maven Artifact選項以自動生成坐標,但這是一個非常耗時的過程(我想做這適用於 300 多個文件)。

還有其他有效的方法嗎?

我看到有兩種方法可以實現你想要的,不幸的是,沒有一種是“開箱即用”的……

  1. 使用命令行客戶端將每個 JAR 文件上傳到 Artifactory。 上傳的主要命令是:

    jfrog rt 上傳 foo.jar maven-local-repo

更多詳情參見https://www.jfrog.com/confluence/display/CLI/CLI+for+JFrog+Artifactory

使用 bash 腳本在 JAR 文件上循環,對於每個文件,將其上傳到單獨的位置,生成一個簡短的 pom(從示例 pom 和一些 sed 將 groupId 和 artifactId 替換為文件名)並將其上傳到JAR 文件。

  1. 由於 Artifactory 通過其 webapp 提供此選項,因此創建一個 Selenium 客戶端,它在每個 JAR 文件上循環,連接到 Artifactory UI,並使用“生成默認 POM”選項上傳每個文件。

https://www.jfrog.com/confluence/display/JFROG/Deploying+Artifacts#DeployingArtifacts-DeployingMavenArtifacts

我相信您已經找到了解決方案,但對於其他必須做類似事情的人,我最終只使用 gradle 為我做了。 我創建了一個裸 gradle 項目和以下 build.gradle。它從指定目錄收集所有 jars 並循環遍歷它們並為每個創建出版物。 我們想使用子文件夾結構作為 groupId,因此有一些邏輯可以在其中進行格式化。

buildscript {
    repositories {
      jcenter()
    }
    dependencies {
      classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.21.0"
    }
 }

apply plugin: 'java'
apply plugin: 'maven-publish'
apply plugin: "com.jfrog.artifactory"

version = '0.2021.0'

ext.thirdPartyLib = fileTree(dir: "$rootDir/../extrajars", include: ['**/*.jar'])
    
    publishing {
        publications {
           thirdPartyLib.each{ jar->
              def fbase = jar.name.minus(".jar")
              "$fbase"(MavenPublication) {
                 artifact jar
                 artifactId fbase

                 //the following was to use the folder structure as the groupId
                 def path = jar.path.minus("\\" + jar.name)
                 path = path.replaceAll("\\\\", ".")
                 path = path.replaceAll("c:/pathtoDirectory", "")

                 groupId = path
              }
           }
        }
     }
     
     artifactory {
        contextUrl = 'http://yourArtifactoryUrl'
        publish {
           repository {
              repoKey='yourRepo'
              username='username'
              password='password'
           }
           defaults {
             thirdPartyLib.each{ jar->
                def fbase = jar.name.minus(".jar")
                publications( fbase )
              }
           }
        }
     }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM