2015-03-03 80 views
4

我在Groovy中編寫了一個Gradle插件,並使用Gradle構建它。我有一個本地網絡Artifactory服務器,我將結果發佈爲使用Gradle中的Gradle Artifactory插件和maven-publish插件。我有另一個Gradle構建腳本依賴這個插件作爲依賴。我已經能夠得到這一切工作,如果我列出我的依賴與特定版本。我試圖使用maven版本範圍(例如'[1.0,2.0)'),但是這個失敗說它找不到maven-metadata.xml。我檢查了Artifactory,果然,它不在那裏。我需要做什麼來製作它,最好是在插件的構建過程中?如何用maven-publish和artifactory-gradle插件生成maven-metata.xml?

這裏是我的自定義插件的gradle的文件的build.gradle:

buildscript { 
    repositories { 
     maven { 
      url "${artifactory_contextUrl}/plugins-release" 
      credentials { 
       username = "${artifactory_user}" 
       password = "${artifactory_password}" 
      } 
     } 
    } 
    dependencies { 
     classpath group: 'org.apache.directory.studio', name: 'org.apache.commons.io', version: '2.4' 
     classpath group: 'org.jfrog.buildinfo', name: 'build-info-extractor-gradle', version: '2.0.9' 
    } 
} 

plugins { 
    id 'com.jfrog.artifactory' version '3.0.1' 
} 

apply plugin: 'groovy' 
apply plugin: 'maven-publish' 

artifactory { 
    contextUrl = "${artifactory_contextUrl}" 
    publish { 
     repository { 
      repoKey = 'plugins-snapshot-local' 
      username = "${artifactory_user}" 
      password = "${artifactory_password}" 
      maven = true 
     } 
     defaults { 
      publications ('mavenJava') 
     } 
    } 
    resolve { 
     repository { 
      repoKey = 'libs-release' 
      username = "${artifactory_user}" 
      password = "${artifactory_password}" 
      maven = true 
     } 
    } 
} 

dependencies { 
    compile gradleApi() 
    compile localGroovy() 
} 

publishing { 
    publications { 
     mavenJava(MavenPublication) { 
      from components.java 
     } 
    } 
} 

我搜索的搖籃,Artifactory的,和Maven文檔來了解Maven的metadata.xml中以及如何生成和部署。它是有意義的,我可以手動構建一個,但我找不到任何解釋具體如何使用Maven-publish插件或artifactory-gradle插件在Gradle中自動生成它的任何內容。我不希望手動更新文件,因爲這會挫敗自動化工作,並且我不想切換到mvn,因爲我已經在Gradle中投入了太多。

回答

2

我需要將groupId添加到我的出版物中。一旦我這樣做了,Artifactory產生了maven-metadata.xml。

publishing { 
    publications { 
     mavenJava(MavenPublication) { 
      from components.java 
      groupId = 'com.group' 
     } 
    } 
} 
1

maven-metadata.xml應該由Artifactory處理。 Artifactory中的本地存儲庫佈局是什麼?

+0

這是maven-2-default的plugins-release-local和plugins-snapshot-local的默認佈局。我還應該提到它是Artifactory的開源版本,所以我實際上認爲它可能是一個需要Pro或更高版本的功能。 – Stuporman 2015-03-03 19:26:32

+0

好吧,拍。我提到的第二個項目收到了一個maven-metadata.xml文件。我將嘗試使用groupId來查看是否有所作爲。 – Stuporman 2015-03-03 19:31:48

+0

果然,添加groupId會導致Artifactory生成一個maven-metadata.xml文件。 – Stuporman 2015-03-03 21:47:31

相關問題