如何从GradleBuild任务中的另一个gradle构建脚本任务设置输出文件?

时间:2017-04-07 06:59:35

标签: gradle build output

我有一个带有gradle构建的项目A.我还有另一个带有gradle构建的项目B.我想将项目B的jar包含在项目A的战争中。我可以从项目A的构建脚本中调用项目B的构建脚本(见下文) 但我不能将项目B的jar设置为任务buildB的输出文件。

有没有办法将项目B的jar(任务jar的输出文件)设置为任务buildB的输出文件?

task buildB(type: GradleBuild) {
    buildFile = "../BProject/build.gradle"
    tasks = ["clean", "jar"]       // jar task produce xxx.jar as it's outputs.files

    // HERE, any script to set xxx.jar as outputs.files of task buildB???
}

war {
    from (buildB) {                // can not get xxx.jar from buildB
        into "WEB-INF/classes"
    }
}

2 个答案:

答案 0 :(得分:2)

您可能需要配置multi module项目并定义project范围依赖项。

由于答案完整答案很长,here您可以找到演示如何完成答案的演示。

该演示包含两个项目。一个项目是为战争而建立的,并且依赖于另一个为战争而建造的项目。如果您构建 a 项目, b 将自动构建并包含在jar中。

答案 1 :(得分:0)

This is what I did.

/settings.gradle

include 'AProject', 'BProject'

/AProject/build.gradle

task buildB(type: GradleBuild) {
    buildFile = "../BProject/build.gradle"
    tasks = ["clean", "jar"]       // jar task produce xxx.jar as it's outputs.files
}

war {
    dependsOn buildB
    doFirst {
        from (project(':BProject').tasks['jar']) {
            into "WEB-INF/classes"
        }
    }
}