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