使用分发插件

时间:2017-09-18 18:56:18

标签: gradle groovy build.gradle gradle-plugin

我正在使用gradle 4.1 我的项目有五个模块。构建后,我在每个模块中生成五个罐子。 我的目标是创建一个zip存档并将其上传到artifactory服务器。 我只能在完成其他模块的构建时使用我的jar生成我的zip部署工件。我看到它从libs目录复制jar,但我正在寻找一种方法来在项目的整体构建之后执行此操作。我看了一些dependsOn的例子,但它似乎没有用。 这就是我所拥有的:

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 个答案:

答案 0 :(得分:2)

创建自定义配置以容纳所有可部署的内容:

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'
        }
    }
}

应该做的伎俩。

答案 1 :(得分:1)

也许你可以使用finalizedBy?。

所以在你的例子中:

build.finalizedBy(distributions)