2

原始问题:https ://github.com/johnrengelman/shadow/issues/744

我最近将我的项目转换为一个多模块项目,但我在使用 shadowjar 的最小化功能时遇到了问题。这是我的项目结构:

Root project 'shadow-jar-test'
+--- Project ':api'
\--- Project ':core'

这是一个多模块项目,core依赖于api模块,core 和 api 都有一些第三方依赖(例如 Kotlin 标准库)。而且,我在根项目的构建脚本中实现了这两个模块,并希望将它们打包到一个 jar 中。

问题是,当我在shadowjar任务中添加minimize()时,它减少了我所有的代码,似乎它认为子项目也是第三方依赖。

shadowJar {
    relocate 'kotlin', 'lib.kotlin'
    relocate 'org.jetbrains', 'lib.org.jetbrains'

    // minimize will remove the :core and :api module?
    minimize()
}

我还尝试将排除语句添加到最小化:

minimize {
        exclude(project(":core"))
        exclude(project(":api"))
}

这样确实会打包core和api,但是core和api依赖的第三方库还是没有打包

影子版

7.0.0

摇篮版本

7.1

预期行为

适当地最小化依赖关系

实际行为

它还最小化了我的项目代码?!

Gradle 构建脚本

我创建了一个示例项目来重现它: https ://github.com/re-ovo/shadow-jar-test

这是根项目构建脚本: https ://github.com/re-ovo/shadow-jar-test/blob/master/build.gradle

4

0 回答 0