Gradle, shadowJar: использовать перемещение внутри задачи
У меня есть следующая задача:
task myJar(type: Jar) {
archiveName = 'myJar.jar'
includeEmptyDirs = false
destinationDir = rootProject.libsDir
dependsOn compileJava
manifest.attributes('Class-Path': '../lib/commons-lang-2.5.jar')
into '/', {
from compileJava.destinationDir
include 'com/myCompany/project/util/order/**',
'com/myCompany/project/event/**',
}
}
и я хотел бы переместить все классы из com/myCompany/project/event/** в com/myCompany/relocated/project/event/** (чтобы некоторые приложения использовали мой jar и имели пакет com.myCompany.project.event определено позволит избежать любых возможных конфликтов)
Я обнаружил, что это можно сделать с помощью теневого плагина, и я попытался добавить
relocate 'com.myCompany.project.event.', 'com.myCompany.relocated.project.event.'
под этой задачей, но это не похоже на работу. Кто-нибудь знает, где я должен добавить эту строку?
0 ответов
Вы можете добиться этого, добавив ниже плагин в свой build.gradle
apply plugin: 'com.github.johnrengelman.shadow'
После добавления этого плагина добавьте приведенный ниже код в свой файл build.gradle.
shadowJar {
relocate 'com.myCompany.project.event', 'com.myCompany.relocated.project.event'
}
После добавления этого, чтобы обеспечить выполнение задачи ShadowJar перед сборкой, добавьте эту строку в конец
assemble.dependsOn shadowJar
Это гарантирует, что задача shadow jar запускается перед задачей сборки / сборки во время сборки gradle.
При выполнении сборки Gradle вы должны увидеть, что все ваши пакеты и соответствующие им зависимости перемещены из com.myCompany.project.event в com.myCompany.relocated.project.event.
Для получения дополнительной информации вы можете обратиться к ShadowJarUserGuide