2017-09-18 89 views
1

我正在使用gradle 4.1 我的項目有五個模塊。構建完成後,我會在每個模塊中生成五個罐子。 我的目標是創建一個zip存檔並將其上傳到artifactory服務器。 只有當其他模塊的構建完成時,我才能用我的罐子生成我的zip部署工件。我看到它從libs目錄中複製jar,但是我正在尋找在項目的整體構建之後執行此操作的方法。我看到一些與dependsOn的例子,但它似乎並沒有工作。 以下是我有:使用分發插件構建項目後運行gradle任務

apply plugin: 'distribution' 

distributions { 
    main { 
    baseName = 'b-deploy' 
    contents { 
     from { "b-model/build/libs/b-model-${version}.jar" } 
     from { "b-wsdl/build/libs/b-wsdl-${version}.jar" } 
     from { "b-common/build/libs/b-common-${version}.jar" } 
     from { "b-rest/build/libs/b-rest-${version}.jar" } 
     from { "b-soap/build/libs/b-soap-${version}.jar" } 
    } 
    } 
} 

回答

2

創建自定義配置,以容納所有你deployables:

configurations { 
    deployable { 
     transitive = false 
    } 
} 

收集您在該配置您的ZIP需要的一切。請注意,您怎麼可以在這裏添加第三方庫,如果需要的話:

dependencies { 
    deployable project(path: ':a') 
    deployable project(path: ':b') 
    deployable 'com.google.guava:guava:22.0' 
} 

然後,創建一個任務爲ZIP:

task deployableZIP(type: Zip) { 
    dependsOn configurations.deployable 

    baseName = 'gradle-deploy' 
    destinationDir = buildDir 

    configurations.deployable.collect { 
     from it 
    } 
} 

最後,配置出版:

publishing { 
    publications { 
     main(MavenPublication) { 
      artifact source: deployableZIP, extension: 'zip' 
     } 
    } 
} 

應該這樣做。

+0

Thanks @madhead。 'deployable'是否帶有插件? – rastaman

+1

作爲第一步,您可以將其創建爲自定義配置。這個名字是任意的。 – madhead

+0

在創建自定義配置時,我需要使用'extendsFrom'正確地將其從其他擴展到她?或者這是不必要的? – rastaman

1

也許你可以使用finalizedBy

所以在你的例子:

build.finalizedBy(distributions) 
相關問題