Gradle,shadowJar:在任务内部使用重定位

Gradle,shadowJar:在任务内部使用重定位,gradle,gradle-shadow-plugin,Gradle,Gradle Shadow Plugin,我有以下任务: 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 '/', {

我有以下任务:

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/remocated/project/event/**(这样一些使用我的jar并定义了com.myCompany.project.event包的应用程序将避免任何可能的冲突)

我发现它可以使用阴影插件来完成,我尝试添加

relocate 'com.myCompany.project.event.', 'com.myCompany.relocated.project.event.'
在这个任务下,但它似乎不起作用。
有人知道我应该在哪里添加这一行吗?

您可以通过在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
这将确保在gradle构建期间在组装/构建任务之前触发shadow jar任务

在执行Gradle构建时,您应该看到所有包及其相应的依赖项从'com.myCompany.project.event'重新定位到'com.myCompany.remocated.project.event'


有关更多信息,您可以参考

我不确定这是否正确,因此只是一个注释,但您是否尝试过指定
type:ShadowJar
而不是
type:Jar