2015-10-19 18 views
0

我有以下目錄結構:出版地方規定的搖籃不工作

myapp/ 
    src/main/resources/ 
     <lots of code> 
    build.gradle 

用下面build.gradle

apply plugin: 'java' 
apply plugin: 'maven' 
apply plugin: 'eclipse' 

sourceCompatibility = '1.8' 
targetCompatibility = '1.8' 

[compileJava, compileTestJava]*.options*.encoding = 'UTF-8' 

group = 'net.myuser' 

repositories { 
    jcenter() 
} 

dependencies { 
    compile(
     <dependencies here> 
    ) 
} 

jar { 
    baseName = 'myapp' 
} 

task writePom << { 
    pom { 
     project { 
      groupId group 
      artifactId 'myapp' 
      version version 

      inceptionYear '2015' 
      licenses { 
       license { 
        name 'myapp' 
        distribution 'Blah blah blah' 
       } 
      } 
     } 
    }.writeTo("build/libs/pom.xml") 
} 

task sourcesJar(type: Jar, dependsOn: classes) { 
    classifier = 'sources' 
    from sourceSets.main.allSource 
} 

task javadocJar(type: Jar, dependsOn: javadoc) { 
    classifier = 'javadoc' 
    from javadoc.destinationDir 
} 

artifacts { 
    archives sourcesJar 
    archives javadocJar 
} 

artifacts { 
    archives(file("${buildDir}/libs/myapp-${version}.jar")) { 
     name "myapp" 
     classifier "" 
    } 
} 

當我這樣做:

./gradlew clean build writePom install -Pversion=0.1.0 

我得到兩個問題:

  1. 在生成的build/libs/pom.xml裏面groupId顯示爲null;和
  2. 我找不到~/.gradle/caches/modules-2net.myuser目錄,它告訴我install不工作

於是我問:什麼我需要改變,這樣groupId不爲空,而我怎麼install發佈以下所有條件:

  • JAR
  • 來源JAR
  • 的Javadoc JAR
  • pom.xml
+1

您是否嘗試過project.group'的'的groupId,而不是'的groupId group'? – thokuest

+0

感謝@thokuest(+1) - 解決了我的第一個問題(其中'pom.xml'現在具有正確的'groupId'值),但是這些工件仍然不會在這個'modules-2'目錄下發布。有任何想法嗎?!?再次感謝! – smeeb

回答

1

按照評論,以設置<groupId>正確使用groupId project.group代替groupId group


關於install任務,請在Gradle Maven Plugin documentation看看:

安裝相關聯的文物本地Maven緩存,包括Maven的元數據生成。

默認情況下,本地Maven緩存位於~/.m2/repository,因此你正在尋找在錯誤的位置。安裝任務不會篡改~/.gradle/caches/modules-2,這是(因爲名稱已經暗示)僅解決了依賴性的緩存。


通過使用Maven插件,Gradle已經爲您創建了POM文件。所以請檢查你是否真的需要定製writePom任務。

此外,主神器會自動安裝,所以這可能是多餘的:

artifacts { 
    archives(file("${buildDir}/libs/myapp-${version}.jar")) { 
     name "myapp" 
     classifier "" 
    } 
}