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

如何从另一个gradle构建脚本设置输出文件';GradleBuild任务中的任务?,gradle,build,output,Gradle,Build,Output,我有一个gradle构建的项目。我有另一个项目B与gradle建设也。我想将项目B的jar包含到项目A的war中。我可以从项目A的构建脚本(见下文)调用项目B的构建脚本。 但是我不能将项目B的jar设置为任务buildB的输出文件 有没有办法将项目B的jar(任务jar的输出文件)设置为任务构建B的输出文件 task buildB(type: GradleBuild) { buildFile = "../BProject/build.gradle" tasks = ["clean

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

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

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

您可能需要配置一个项目并定义一个范围依赖项

因为完整的答案会很长,你可以找到一个演示,展示如何做到这一点

演示由两个项目组成。一个项目是为战争而构建的,并且依赖于另一个为战争而构建的项目。如果您构建a项目,b将自动构建并作为jar包含。

这就是我所做的

/格雷德尔酒店

include 'AProject', 'BProject'
/a项目/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"
        }
    }
}

我想您需要设置一个多模块项目,并定义一个
编译
类型项目的依赖项。谢谢您的回答,Opal。但buildA并不依赖于buildB的jar,它只将jar用作可下载的资源。因此,它不需要将项目B定义为编译依赖项。但您的答案和github源代码让我想到了多项目,所以我想出了一个解决方案。再次感谢!只有当
BProject
是一个简单的单模块构建时,这才有效,否则您需要包含它的所有依赖项(即子项目)。