运行 gradle 使用分发插件构建项目后的任务

Run gradle task after project is built with distribution plugin

我正在使用 gradle 4.1 我的项目有五个模块。构建后,我在每个模块中生成五个 jar。 我的目标是创建一个 zip 存档并将其上传到 artifactory 服务器。 只有当其他模块的构建完成时,我才能用我的 jar 生成我的 zip 部署工件。我看到它从 libs 目录复制 jars,但我正在寻找一种在项目的整体构建之后执行此操作的方法。我看到了一些 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" }
     }
   }
 }

也许你可以使用 finalizedBy?

所以在你的例子中:

build.finalizedBy(distributions)

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

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

应该可以解决问题。