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'
    }
}

Преимущество заключается в том, что выходной каталог создается автоматически, если он еще не существует. Другое преимущество использования задачи копирования вместо операции копирования, как в ответе выше, состоит в том, что задача копирования поддерживает пошаговое выполнение сборки (актуальные проверки).

С уважением, Рене

Другие вопросы по тегам