【发布时间】:2013-09-24 18:47:14
【问题描述】:
这是一个奇怪的问题,但不是理论上的……
我想制作一个使用
buildSrc和内部 java 项目的 Gradle 项目。该 java 项目定义了一些在构建过程中使用的类。令人讨厌的技巧是,Gradle 项目产生了一堆输出,包括属于
buildSrc本身的 Java 项目的修改类。
有什么方法可以用 Gradle 来表达吗?
我现在想到的唯一解决方案是:连续运行整个构建脚本两次。有没有办法避免这种情况?例如,通过为buildSrc 生成修改后的代码,重新编译buildSrc,然后生成Gradle 主项目的附加输出?
【问题讨论】:
-
就不能摆脱循环依赖吗?将 Groovy 项目分成代码生成模块,以及消耗代码生成器输出的部分。 (和/或可能有一些共享代码。)然后运行代码生成器,编译生成的 Java,编译你的主要内容。
-
我的第一直觉也是。不幸的是,我正在处理一个遗留项目,其中代码生成实际上使用它输出的类。 (该过程不久前是手动引导的。)
-
好的,但是循环依赖几乎意味着您不能一步完成。 (从技术上讲,甚至两个都不正确,正确的方法是重新运行代码生成器,直到没有任何变化。)
-
我同意这是多个步骤(任务)。我只是想看看我是否可以通过一次 Gradle 调用来做到这一点。
-
然后呃...将codegen拆分成自己的模块,并使用custom task?调用codegen它仍然有点脆弱,但至少在构建主模块时它是自动化的。
标签: java compiler-construction gradle