Gradle - Dependência de classes Groovy e Java - Compilar
Meu projeto possui código Java (N arquivos) e Groovy (apenas 1 arquivo). A compilação Java depende do arquivo de classe desse arquivo Groovy para compilação Java (tarefa compileJava para ser bem-sucedida).
Quando eu não uso o src / java como um dos srcDir na seção principal> groovy> sourceSet, recebo um erro dizendo que a classe / símbolo não encontrado está no arquivo / classe do groovy. No ANT, é fácil chamarmos o destino de compilação-groovy primeiro, antes de chamar o destino de compilação-java, mas o mesmo em Gradle é o que estou tentando encontrar.
Eu li alguns posts e descobri que, se eu criar a seção main> java NULL e especificar srcDir para main> java, que é src / java na seção main> groovy sourceSet, ele compila bem.
Meus? S: 1. Existe alguma outra maneira de fazer? por exemplo, o seguinte deve funcionar:
compileJava {
dependsOn compileGroovy
}
no entanto, isso vai para um loop infinito.
OU
que tal usar o doFirst para a tarefa compileJava:
compileJava {
doFirst {
compileGroovy
}
}
isso também não funciona.
build.gradle Isso funciona, mas compilar o Java em um sentido se torna inútil aqui, mesmo que o código-fonte tenha N não. de arquivos java na árvore src / java ou src / java-test etc. Eu sei que esse script de compilação está funcionando, mas logicamente isso pode trazer alguma confusão ao desenvolvedor se ele não estiver familiarizado por que o sourceSet for Groovy DEVE ter "src / java" como seu valor 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'
}
}
}
Outros links:Como fazer o Gradle compilar testes Groovy antes de testes Java