无论如何,在构建任务中需要执行特定任务吗?

时间:2019-05-14 14:59:14

标签: gradle build.gradle

我想在运行根项目的构建任务时将子模块归档文件复制到根项目的构建目录中

task archive(type: Zip) {
    dependsOn copyWars

    archiveName = "${project.name}-${version}.zip"
    destinationDir = file('build/dist')
    from 'build/libs'
    exclude "*.zip"
    includeEmptyDirs = false
}

我已经尝试使用build.dependsOn archivebuild.finalizedBy archive

在运行根模块构建任务时,我希望包含子模块war文件的根模块zip文件。 设a,b为两个子模块,c为根模块。因此c.zip应该包含a.warb.war。但是没有创建c.zip文件。 可能是我做错了方法。 请任何人告诉我正确的道路。

1 个答案:

答案 0 :(得分:0)

假设您有两个产生war1伪像的子项目war2war:Root项目脚本中的以下配置应该起作用:

build.gradle (根项目)

// copy war artifacts from sub-projects
task copyWars(type: Copy){
    into "build/libs"
    from project("war1").war
    from project("war2").war
}

// create archive with content from  'build/libs' directory
task archive(type: Zip) {
    dependsOn copyWars
    archiveName  = "${project.name}-${version}.zip"
    destinationDir  = file('build/dist')
    from 'build/libs'
    exclude "*.zip"
    includeEmptyDirs = false
}
// add 'archive' task to the main "build" lifecycle
build.dependsOn archive

您还可以简化并摆脱copyWars(如果此任务仅是为了将战争从子项目复制到根项目):

task archive(type: Zip) {
    dependsOn copyWars
    archiveName  = "${project.name}-${version}.zip"
    destinationDir  = file('build/dist')
    from 'build/libs'
    from project("war1").war
    from project("war2").war        
    exclude "*.zip"
    includeEmptyDirs = false
}
build.dependsOn archive