gradle - проект с несколькими модулями - неправильное выполнение каталога
У меня есть несколько модулей, управляемых Gradle. Структура каталогов выглядит следующим образом:
- мониторинг
- клиент
- сервер
Когда я вызываю 'Gradle War' на уровне мониторинга, я получаю следующее исключение:
msgstr "мониторинг /js не существует."
Который исходит из build.gradle клиента:
task copyJs << {
'mkdir src/main/webapp/js'.execute()
def ant = new groovy.util.AntBuilder()
ant.copy(todir: 'src/main/webapp/js') {
fileset(dir: 'js') {
include(name: '**/*.js')
}
}
}
Исключение происходит потому, что указанная задача выполняется на корневом уровне проекта. Как изменить его, чтобы он выполнялся на соответствующем (клиентском) уровне? Как изменить basedir для задачи муравья, которая используется?
2 ответа
Должно быть сделано как объяснено здесь
task copyJs << {
file('src/main/webapp/js').mkdir()
copy {
into 'src/main/webapp/js'
from('js') {
include '**/*.js'
}
}
}
Другой вариант - использовать задачу копирования:
task copyJs(type:Copy){
into('src/main/webapp/js')
from('js') {
include '**/*.js'
}
}
Преимущество заключается в том, что выходной каталог создается автоматически, если он еще не существует. Другое преимущество использования задачи копирования вместо операции копирования, как в ответе выше, состоит в том, что задача копирования поддерживает пошаговое выполнение сборки (актуальные проверки).
С уважением, Рене