Используя плагин gradle shadowJar версии 4.0.2 и gradle 4.10, я хотел создать два отдельных shadowJar, один для моего исходного кода и другой для моих зависимостей (поскольку зависимости большие и редко меняются, я не хочу их переупаковыватькаждый раз, когда я меняю свой исходный код).Я имею в виду, что у меня есть плагин gradle, который добавляет две отдельные задачи и принимает те же конфигурации, которые были предоставлены пользователем для shadowJar, и переопределяет конфигурации / источники, используемые для создания shadowJar.
Ниже приведено то, что у меня естьдо сих пор пытаюсь найти чистый способ передать теневые конфигурации только один раз, и есть ли другие ошибки, о которых мне нужно беспокоиться (например, наличие двух файлов mergeServiceFiles сломается и т. д.)
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
task dependencyShadowJar(type: ShadowJar) {
mergeServiceFiles()
zip64 = true
relocate 'com.google.common', 'com.shadow.com.google.common'
classifier = 'dependencies'
configurations = [project.configurations.runtime]
}
task userCodeShadowJar(type: ShadowJar) {
mergeServiceFiles()
zip64 = true
relocate 'com.google.common', 'com.shadow.com.google.common'
classifier = 'mycode'
from sourceSets.main.output
}
task splitShadowJar {
doLast {
println "Building separate src and dependency shadowJars"
}
}
splitShadowJar.dependsOn dependencyShadowJar
dependencyShadowJar.dependsOn userCodeShadowJar
- В идеале я хотел бы, чтобы параметры shadowJar были указаны один раз, а задачи копировали те же настройки. Требуется ли создание нестандартной задачи плагина в groovy?
- Могу ли я скопировать настройки из существующего shadowJar, который пользователь указал, и просто переопределяет только часть
from
или configurations
для моей цели
Кто-нибудь пытался сделать что-то подобное?