2017-09-18 57 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) 
相关问题