gpt4 book ai didi

java - Gradle:我可以编译依赖于自身输出的代码吗?

转载 作者:搜寻专家 更新时间:2023-11-01 03:06:58 24 4
gpt4 key购买 nike

这是一个奇怪的问题,但它不是理论上的......

  1. 我想创建一个使用 buildSrc 的 Gradle 项目,其中包含一个 java 项目。该 java 项目定义了构建过程中使用的一些类。

  2. 糟糕的是,Gradle 项目产生了一堆输出,包括属于buildSrc 本身的 Java 项目的修改类。

有什么方法可以用 Gradle 表达吗?

我现在想到的唯一解决方案是:连续运行整个构建脚本两次。有什么办法可以避免这种情况吗?例如,通过为 buildSrc 生成修改后的代码,重新编译 buildSrc,然后生成主 Gradle 项目的附加输出?

最佳答案

好吧,基于 Michael Easter 的精彩示例,我可以让主级构建在它自己的任务之一上调用 GradleBuild:

task generateNewCode() << {
println("tracer top build")

// BuildTool is a Java class defined in `buildSrc`
// ... and it has a cyclic dependency on its own
// output (eek -- but that's what I'm dealing with!)
BuildTool.generateNewCode();
}

task generateDocs(type: GradleBuild) {
buildFile='build.gradle'
tasks = ['generateDocs_Real']
}

task generateDocs_Real << {
BuildTool.outputDocumentation();
}

generateDocs.dependsOn generateNewCode

然后我可以调用 gradle generateDocs 来做:

  1. Codegen(在 buildSrc 中创建新的 java 类)
  2. 重新编译buildSrc
  3. 使用来自重新编译的 buidSrc 的帮助程序生成文档

关于java - Gradle:我可以编译依赖于自身输出的代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18989630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com