原始问题: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