Gradle: одна банка на каталог классов - PullRequest
0 голосов
/ 03 октября 2018

Я сгенерировал несколько папок классов и пытаюсь сгенерировать Jar для каждой из них.Я сохранил эти папки в classesDirectories var.

Вот задача, которую я попробовал:

task sourcesJar(type: Jar) {
    ext.counter= 0; 
    classesDirectories.each { aDir ->
        counter++
        baseName (counter.toString()) +".jar"
        from "${aDir}"
        destinationDir project.buildDir
    }
}

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

Как мне создать jar для каждого каталога классов?

1 Ответ

0 голосов
/ 03 октября 2018

Задача Jar может создать только один архив.

Вы можете объявить одну задачу Jar на каталог класса, используя динамическое создание задачи:

// Main wrapper task that will depend on each source-x tasks
task sourcesJar

ext{
    // class directories 
    classesDirectories = ['externalClasses/app1', 'externalClasses/app2', 'externalClasses/app2']
    // counter for incrementing task name
    taskNum = 0
}
classesDirectories.each { srcDir ->
    taskNum++
    def task = task "source-${taskNum}" (type: Jar) {
        baseName "${taskNum}.jar"
        from file("$srcDir")
        destinationDir project.buildDir
    }
    sourcesJar.dependsOn(task)
}

Тогда вам просто нужно выполнить./gradlew sourcesJar: это запустит выполнение всех source-x задач и выдаст ожидаемые банки:

11:05:20: Executing task 'sourcesJar'...

> Task :source-1
> Task :source-2
> Task :source-3
> Task :sourcesJar
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...