Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用分发插件构建项目后运行gradle任务_Gradle_Groovy_Build.gradle_Gradle Plugin - Fatal编程技术网

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

使用分发插件构建项目后运行gradle任务,gradle,groovy,build.gradle,gradle-plugin,Gradle,Groovy,Build.gradle,Gradle Plugin,我用的是Gradle4.1 我的项目有五个模块。构建之后,我在每个模块中生成五个JAR。 我的目标是创建一个zip存档并将其上传到artifactory服务器。 只有在其他模块的构建完成时,我才能使用JAR生成zip部署工件。我看到它从libs目录复制jars,但我正在寻找一种在项目整体构建之后实现这一点的方法。我看到了dependsOn的一些例子,但它似乎不起作用。 以下是我所拥有的: apply plugin: 'distribution' distributions { main

我用的是Gradle4.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" }
     }
   }
 }
也许你可以用

在你的例子中:

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

应该可以了。

谢谢@madhead。
deployable
是否与插件一起提供?作为第一步,您可以将其创建为自定义配置。名称是任意的。当创建自定义配置时,我需要使用
extendsFrom
从其他扩展她。正确吗?或者这是不必要的?扩展是不必要的。在这种情况下,您不应该从任何配置扩展
deployables
,以免额外的工件污染它(因为您希望控制ZIP中的内容)。