Gradle - Копирование банок всех измененных модулей в многокомпонентной сборке проекта - PullRequest
0 голосов
/ 29 августа 2018

У меня есть многомодульная сборка с примерно 100 модулями. Есть ли способ создать JAR-файлы только для измененных модулей и скопировать их куда-нибудь?

Задача должна быть отдельной, без изменения существующих задач jar

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Таким образом, предполагая, что все ваши модули являются простыми java модулями, все ваши модули будут иметь задачу jar (типа Jar), которая создает файл JAR соответствующего модуля. Каждая задача jar будет выполняться, только если ее содержимое каким-либо образом изменилось (например, были скомпилированы новые файлы), благодаря функции инкрементальной сборки Gradle.

Вы можете просто добавить закрытие doLast к каждой из этих задач, которое копирует созданный файл в ваш каталог, потому что закрытие будет выполнено только тогда и только тогда, когда задача была выполнена:

Пример для одной задачи:

jar {
    doLast {
        project.copy {
            from archivePath
            into 'path/to/my/location'
        }
    }
}

Если это работает для одного модуля, мы можем попробовать подход, аналогичный тому, что сделал @ lance-java:

allprojects { project ->
    project.tasks.withType(Jar).all { jar ->
        jar.doLast {
            project.copy {
                from jar.archivePath
                into 'path/to/my/location'
            }
        }
    }
}
0 голосов
/ 29 августа 2018

При условии, что все входы и выходы задач настроены правильно, Gradle поддерживает актуальную проверку и пропуск задач из коробки. См. актуальных проверок (так называемая инкрементная сборка)

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

Например

task syncJars(type: Sync) {
    allprojects { p ->
        from p.tasks.withType(Jar)
    }
    into 'path/to/target/dir' 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...