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

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