2012-04-12 34 views
4

目前,我們的gradle設置適合於在構建完成時發佈到某些maven倉庫。對於特定的客戶,我需要壓縮JAR,許可證文件,pom.xml和ivy.xml文件,然後以zip形式發送。要做到這一點,我只需要定義一個替代位置來發布它。 Gradle站點上的所有文檔似乎都是爲了編寫一套發佈規則,而不是一套替代方案。在gradle中,如何生成ivy.xml和pom.xml文件?

我一直希望簡單地寫一個不同的任務,重點是構建這個客戶特定的zip文件。到目前爲止,我已經收集了所有包含源代碼和可運行代碼的jar文件以及許可證和通知文件。但是我還沒有破解定義本地常青藤資源庫和本地maven資源庫的問題,這只是這個alt任務的一部分。

task alt { 
    dependsOn subprojects*.tasks*.matching { task -> task.name == 'assemble' } 

    subprojects.each{project -> 
     if (project.hasProperty('sourceJar')) { 
      evaluationDependsOn(project.name) 
     } 
    } 

    File altDir = mkdir("$buildDir/alt") 
    subprojects.each { project -> 
     if (project.hasProperty('sourceJar')) { 
      // Extra the module name from the path of the sub-project 
      String submodule = project.projectDir.absolutePath.split(File.separator).last() 
      File subfolder = mkdir(altDir.absolutePath + "/${project.group}/${group}.${submodule}/$version") 
      project.tasks.withType(Jar).each {archiveTask -> 
       copy { 
        from archiveTask.archivePath 
        from("$rootDir") { 
         include 'license.txt' 
         include 'notice.txt' 
        } 
        into subfolder 
       } 
      } 
     } 
    } 
} 

回答

3

這裏是gradle docs,告訴你如何生成pom。另外,如果您正在尋找將該文件安裝到本地存儲庫,則可以使用此blog entry中描述的機制。基本上所有你需要做的

configure(install.repositories.mavenInstaller) { 
    pom.project { 
     version '1.0' 
     artifactId 'your.artifact.id' 
     groupId 'your.group.id' 
    } 
} 

它看起來並不像它可以在一瞬間產生的gradle通過了的ivy.xml,但一旦你有你的POM文件,你可以使用ivy自身生成ivy文件described here

0

http://www.gradle.org/docs/current/userguide/publishing_ivy.html的64.5部分涵蓋「生成常規模塊描述符文件而不發佈」。

該文檔有點不一致(例如,不一致的命名約定)。以下作品適合我:

apply plugin: 'ivy-publish' 

publishing { 
    publications { 
     aoeu(IvyPublication) 
    } 
} 

這會產生一個目標generateDescriptorFileForAoeuPublication

相關問題