Tugas Gradle SubProject tidak diambil
Aug 17 2020
Saya memiliki pengaturan multi-modul untuk proyek Java dengan struktur berikut.
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
di mainApp/build.gradle
saya sebutkan
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";
}
dan saya core-module/build.gradle
memiliki target uji sebagai
test {
useTestNG() {
useDefaultListeners = true
suites 'test/testng.xml'
}
}
tetapi mendapatkan error seperti di bawah ini .. Apa yang saya lewatkan di sini?
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)
Sunting
subprojects {
test.dependsOn(rootProject.tasks['CreateMessageKeys'])
}
task CreateMessageKeys(type: CreateMessageKeysTask) {
destDir = "bundle-common/src/";
outputClass = "common.messages.MessageKeys";
}
Ini menghasilkan kesalahan:
* What went wrong:
A problem occurred evaluating root project 'myApp'.
> Task with name 'CreateMessageKeys' not found in root project 'mainApp'.
Jawaban
1 JensV Aug 17 2020 at 18:57
Definisi tugas tampaknya tidak benar, lihat menentukan tugas .
Ini akan terlihat seperti ini:
task ('CreateMessageKeys', type: CreateMessageKeysTask) {
destDir = "bundle-common/src/";
outputClass = "common.messages.MessageKeys";
}
atau
task (CreateMessageKeys, type: CreateMessageKeysTask) {
destDir = "bundle-common/src/";
outputClass = "common.messages.MessageKeys";
}
Tidak relevan dengan pertanyaan ini:
Dalam contoh kedua Anda, mungkin tugas CreateMessageKeys
belum ada saat ini dievaluasi. Salah satu solusi yang mungkin adalah sebagai berikut:
subprojects.each {
it.afterEvaluate {
it.test.dependsOn(...)
}
}
Atau hanya dengan meletakkan definisi tugas di atas blok ini dapat menyelesaikan masalah ini.
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan