#java #gradle #build #build.gradle
#java #gradle #сборка #build.gradle
Вопрос:
У меня есть многомодульная настройка для проекта Java со следующей структурой.
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
в mainApp/build.gradle
я пытался
task('collectBundles', type: Copy) {
dependsOn "core-module:jar","lib-module:jar","lib-another-module:jar"
into "$buildDir/image/"
into("lib") {
from project('core-module').file('build/libs/core-module.jar')
from project('lib-module').file('build/libs/core-module.jar')
from project('lib-another-module').file('build/libs/lib-another-module.jar')
}
outputs.upToDateWhen { false }
}
это dependsOn
я пытаюсь решить, но я получаю ошибки
task('collectBundles', type: Copy) {
dependsOn subprojects.finaAll { it.tasks.findByName("jar") }
into "$buildDir/image/"
into("lib") {
from project('core-module').file('build/libs/core-module.jar')
from project('lib-module').file('build/libs/core-module.jar')
from project('lib-another-module').file('build/libs/lib-another-module.jar')
}
outputs.upToDateWhen { false }
}
Даже я пытался dependsOn subprojects.findResult { it.tasks.findByName("jar") }
Я получаю ошибки как
* What went wrong:
A problem occurred evaluating root project 'connectors'.
> Could not find method register() for arguments [{type=class org.gradle.api.tasks.Copy}, collectBundles, build_9f9pperbss2o8q2l4apsb5p9d$_run_closure15@c3c2ad7] on task set of type org.gradle.api.internal.tasks.DefaultTaskContainer.
> ```
Комментарии:
1. Где это
findResult
определено? В вашем первом примере, я думаю, вы используетеfindAll
, однако вам, вероятно, следует использоватьcollect
, посколькуfindAll
работает как фильтр и возвращает не задачи, а подпроекты.2. О, я думал, что это
Gradle API