首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gradle:从fat jar中排除从compileOnly中提供的依赖项

Gradle:从fat jar中排除从compileOnly中提供的依赖项
EN

Stack Overflow用户
提问于 2019-07-01 13:56:49
回答 1查看 1K关注 0票数 1

我在compileOnly配置和其他几个库中使用了一个巨大的依赖项(Spark)。当然,我正在尝试构建一个不依赖compileOnly的胖jar。但是,Gradle这样做很好,但是有几个库声明了compile/runtimeOnly依赖项,这些依赖项也是compileOnly巨大依赖项的依赖项,例如:

代码语言:javascript
复制
my-module
|-> compileOnly: spark
|   ...
|   \-> compile: scala-reflect
|   ...
\-> implementation: library
    ...
    \-> runtimeOnly: scala-reflect

这会导致scala-reflect作为运行时依赖项被包含到jar中,这是我正在试图避免的。这里只以Scala为例,实际上有更多类似的例子(杰克逊,ApacheCommons的一部分,…)。。

是否有办法强制执行compileOnly传统依赖关系?

正如我所看到的,我可以手动地exclude那些传递的依赖项并将它们重新声明为compileOnly,但是这会有点混乱(我错过了什么吗?)我是否排除了一些没有实际提供的东西?)

EN

回答 1

Stack Overflow用户

发布于 2020-11-19 16:22:55

您可以尝试通过dependencies指令强制执行影子插件以删除那些不需要的依赖项。

例如:

代码语言:javascript
复制
shadowJar {
  dependencies {
    exclude(dependency('org.scala-lang:scala-reflect:.*'))
  }
}

更多信息请访问https://imperceptiblethoughts.com/shadow/configuration/dependencies/#filtering-dependencies

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56836971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档