2016-06-17 168 views
1

我想用IntelliJ/Gradle生成一個包含pom.xml的jar包,以便在其他項目中使用它。 我嘗試了build.gradle下面的代碼:用Gradle生成jar包中的pom.xml

group 'com.test' 
version '1.0-SNAPSHOT' 

apply plugin: 'java' 
apply plugin: 'maven-publish' 

sourceCompatibility = 1.5 

repositories { 
    mavenCentral() 
} 
jar { 
    into("META-INF/maven/$project.group/$project.name") { 
     from generatePomFileForMavenJavaPublication 
     rename ".*", "pom.xml" 
    } 
} 
publishing { 
    publications { 
     mavenJava(MavenPublication) { 
      from components.java 
     } 
    } 
} 
dependencies { 
    testCompile group: 'junit', name: 'junit', version: '4.11' 
    compile group: 'postgresql', name: 'postgresql', version: '9.1-901.jdbc4' 
} 

但我發現了以下錯誤:

'jar' cannot be applied to '(groovy.lang.closure <org.gradle.api.tasks.bundling.AbstractArchiveTask>)' 

和gradle這個說:

Could not find property 'generatePomFileForMavenJavaPublication' on 
task ':jar'. 

還是沒有人知道的另一種方法?

+0

什麼是'generatePomFileForMavenJavaPublication'?它似乎會導致問題.. – Opal

+0

也許你應該使用'maven-deploy' Gradle插件來做到這一點? – Vampire

+0

'generatePomFileForMavenJavaPublication'是'publishing'中列出的gradle中的任務,它在'build'目錄中創建pom.xml –

回答

0

from想要一個文件或路徑。你在喂什麼,generatePomFileForMavenJavaPublication是一項任務,這絕對不是一個文件或路徑,所以這不會起作用。

你可以做的就是讓generatePomFileForMavenJavaPublication成爲jar的先決條件,然後拿起你在build目錄下創建的pom。

像下面要做到這一點:

jar { 
    dependsOn generatePomFileForMavenJavaPublication 
    from("$builddir/pom.xml") //Or whatever path it goes to in the generate task. 
    into("META-INF/maven/$project.group/$project.name") 
} 
+0

這很有道理。但我仍然得到相同的錯誤... –

+1

似乎gradle不能完成任務generatePomFileForMavenJavaPublication(我編輯我的問題,發現從Gradle的另一個錯誤消息) –

0

我剛剛發現的pom.xml不必是罐內。

它的工作原理,當我發佈到本地Maven的(而不是Maven的中央):

group 'ch.test' 
version '1.0-SNAPSHOT' 

apply plugin: 'java' 
apply plugin: 'maven-publish' 

sourceCompatibility = 1.5 

repositories { 
    mavenLocal() 
} 

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

     } 
    } 
} 

dependencies { 
    testCompile group: 'junit', name: 'junit', version: '4.11' 
    compile group: 'postgresql', name: 'postgresql', version: '9.1-901.jdbc4' 
} 
相關問題