Gradle - Groovy 和 Java 类依赖关系 - 编译
我的项目同时具有 Java(N 个文件)和 Groovy 代码(仅 1 个文件)。Java 编译依赖于这个单个 Groovy 文件的类文件进行 Java 编译(编译 Java 任务要成功)。
当我不使用src / java作为main>groovy>sourceSet部分中的srcDir之一时,我会收到一个错误,说在时髦的文件/类中找不到类/符号。在ANT中,我们很容易先调用编译时髦目标,然后再调用编译java目标,但在Gradle中,我试图找到的是相同的目标。
我读了一些帖子,发现如果我将main>java部分设置为NULL并为main>java指定srcDir,这是main>groovy sourceSet部分中的src / java,那么它编译得很好。
我的:1.有没有其他方法可以做?对于 ex,以下方法应该有效:
compileJava {
dependsOn compileGroovy
}
但是,这进入了一个无限循环。
或
使用doFirst进行编译Java任务怎么样:
compileJava {
doFirst {
compileGroovy
}
}
这也不起作用。
build.gradle 这是有效的,但是编译Java在某种意义上变得无用,即使源代码有N no。src/java 或 src/java-test etc 树中的 java 文件。我知道这个构建脚本正在工作,但从逻辑上讲,如果他/她不熟悉为什么Groovy的sourceSet必须有“src /java”作为其srcDir值,它可能会给开发人员带来一些困惑。
apply plugin: 'java'
apply plugin: 'groovy'
sourceSets {
main {
groovy {
srcDir 'src/groovy'
srcDir 'src/java'
}
java {
//The following needs to be commented out OR Gradle will always pick compileJava before compileGroovy
//srcDir 'src/java'
//srcDir 'src/java-test'
}
}
test {
groovy {
srcDir 'test/groovy'
}
java {
srcDir 'test/java'
}
resources {
srcDir 'test/resources'
srcDir 'conf'
}
}
integrationTest {
groovy {
srcDir 'src/groovy-test'
}
java {
srcDir 'src/java-test'
}
resources {
srcDir 'test/resources'
srcDir 'conf'
}
}
}