我写了一个相当简单的渐变任务,称为"instrument"。它现在所做的就是在java项目的src文件夹中移动,并对它找到的每个.java文件调用instrumenter,它将该文件的修改版本复制到构建文件夹中的某个位置。稍后,我想使用这些文件来编译项目,而不是原始文件,但首先我还需要检测项目依赖性,因为这是一个模块化项目。
有没有一种简单的方法可以实现这一点,而无需将任务硬编码到每个依赖项中?因为以后这需要适用于各种各样的项目结构。现在,依赖项在我的主要项目模块的build.gradle文件中声明,如下所示:
dependencies {
implementation project(':common')
}
此外,如果有人能为我指明正确的方向,在构建文件夹中使用插入指令的.java文件编译src文件夹,而不是原始的src文件夹,我将不胜感激。
我最初尝试使用javac手动编译整个项目,但结果发现这比必要的要复杂得多。
不确定您期望的是什么,但是:
- 您可以为此编写自己的gradle插件
- 或者你可以把这个任务放在ROOT/buildSrc/。。。可用于所有子项目
进一步(您可能已经在任务中自己解决了这些问题:
您可以检查子项目中是否存在某个依赖项(或src配置),或者检查存在的依赖项:configurations.compile.resolve().each { println it.canonicalPath }
或检查是否存在某个/您的自定义配置。
关于我发现的生成源,例如:
- https://discuss.gradle.org/t/right-way-to-generate-sources-in-gradle-7/41141
- https://discuss.gradle.org/t/how-to-add-generated-sources-to-compile-classpath-without-adding-them-to-the-main-sourceset/5614