As tarefas Gradle SubProject não estão sendo selecionadas
Aug 17 2020
Eu tenho uma configuração de vários módulos para um projeto Java com a seguinte estrutura.
mainApp
|--> core-module
| |--> src
| |--> build.gradle
| |--> gradle.properties
|
|--> lib-module
| |--> src
| |--> build.gradle
| |--> gradle.properties
|--> lib-another-module
| |--> src
| |--> build.gradle
| |--> gradle.properties
|--> settings.gradle
|--> build.gradle
em mainApp/build.gradle
eu mencionei
subprojects {
test.dependsOn "CreateMessageKeys"
//test.dependsOn ":CreateMessageKeys"
//test.dependsOn ("CreateMessageKeys")
//test.dependsOn (":CreateMessageKeys") none of this working....
}
task CreateMessageKeys(type: CreateMessageKeysTask) {
destDir = "bundle-common/src/";
outputClass = "common.messages.MessageKeys";
}
e meu core-module/build.gradle
tem um alvo de teste como
test {
useTestNG() {
useDefaultListeners = true
suites 'test/testng.xml'
}
}
mas recebendo erro como abaixo.. O que estou perdendo aqui?
Caused by: groovy.lang.MissingMethodException: No signature of method: java.lang.String.dependsOn() is applicable for argument types: (String) values: [CreateMessageKeys]
Possible solutions: respondsTo(java.lang.String)
Editar
subprojects {
test.dependsOn(rootProject.tasks['CreateMessageKeys'])
}
task CreateMessageKeys(type: CreateMessageKeysTask) {
destDir = "bundle-common/src/";
outputClass = "common.messages.MessageKeys";
}
Gera o erro:
* What went wrong:
A problem occurred evaluating root project 'myApp'.
> Task with name 'CreateMessageKeys' not found in root project 'mainApp'.
Respostas
1 JensV Aug 17 2020 at 18:57
A definição da tarefa não parece correta, consulte definição de tarefas .
Deve ficar assim:
task ('CreateMessageKeys', type: CreateMessageKeysTask) {
destDir = "bundle-common/src/";
outputClass = "common.messages.MessageKeys";
}
ou
task (CreateMessageKeys, type: CreateMessageKeysTask) {
destDir = "bundle-common/src/";
outputClass = "common.messages.MessageKeys";
}
Irrelevante para esta pergunta:
Em seu segundo exemplo, talvez a tarefa CreateMessageKeys
ainda não exista quando isso for avaliado. Uma solução possível seria a seguinte:
subprojects.each {
it.afterEvaluate {
it.test.dependsOn(...)
}
}
Ou simplesmente colocar a definição da tarefa acima deste bloco pode resolver isso.
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?