问题标签 [gradle-shadow-plugin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1050 浏览

gradle - Gradle:shadowJar 将依赖项排除在外

在尝试创建胖 jar 时,shadowJar 会遗漏很多依赖项。我从工作 pom.xml 创建了一个 build.gradle 文件。Maven 可以毫无问题地构建一个胖罐子。阅读 Gradle 关于构建 fat jar 的信息,shadowJar 插件似乎是推荐的方法。但是,我的 Gradle fat jar 给出了以下运行时错误:

显然,我的远罐子缺少了一些东西。果然,org/apache/hadoop/fs/PathId 和整个依赖目录都丢失了。尽管 pom.xml 没有明确包含 'org.apache.hadoop:hadoop-common' 依赖项,但我明确地将工件作为依赖项添加到我的 build.gradle 文件中,但仍然没有乐趣。

回答几个问题:

  • 存储库中是否有 hadoop-common 工件?是的。
  • 工件的命名版本是否在存储库中?是的
  • 类 PathId 是存储库中的工件吗?工件的“jar xf”表示“是”。

由于 Maven fat jar 完美运行,并且 unjaring Maven fat jar 显示 PathId 类(以及 Gradle fat jar 中缺少的其他类),那么我的 build.gradle 文件和/或 shadowJar 插件和/或 Gradle 有问题。

build.gradle文件:

我的 build.gradle 文件做错了什么?

  • 梯度 4.9
  • 操作系统:Linux 3.10.0-514.el7.x86_64 amd64
  • JVM:1.8.0_151(甲骨文公司 25.151-b12)
0 投票
1 回答
484 浏览

gradle - Gradle 和 Shadow 插件 - 在 shadowJar 任务之后将附加文件(.jar 文件)复制到最终 jar

问题描述
我正在使用 Gradle Shade 插件,一切正常,并将资源文件复制到最终的 jar 中。但是,正如文档所说,它不能将其他.jar文件作为资源包含在内,因为它无法将它们与依赖项区分开来。它会解开它们而不是。

我想做什么
我想将文件夹(位于我旁边)中的额外.jar文件复制到任务生成的最终文件中。toolsbuild.gradlejarshadowJar

问题
如何扩展任务(shadowJar)以将其他文件复制到生成的 jar 文件中。

0 投票
0 回答
200 浏览

gradle - 配置影子插件以构建仅包含依赖项的胖 jar

是否可以配置影子插件来构建仅具有项目依赖项的 uber jar?理想情况下我想跑步

并让它在我的build/libs/文件夹中生成两个 jar -

1) 一个只有项目类文件/资源​​的超薄 jar

2) 一个包含所有项目依赖项的胖 jar

0 投票
1 回答
3996 浏览

gradle - Gradle,shadowJar:在任务中使用重定位

我有以下任务:

我想将所有类从 com/myCompany/project/event/** 重新定位到 com/myCompany/relocated/project/event/** (以便某些应用程序使用我的 jar 并拥有 com.myCompany.project.event 包定义将避免任何可能的冲突)

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

在这个任务下,但它似乎不起作用。有人知道我应该在哪里添加这一行吗?

0 投票
1 回答
704 浏览

gradle - Ktor 和 Kotlin 多平台的胖 jar 问题

我有一个针对 Android 和 iOS 的 kotlin 多平台项目,并且最近集成了 ktor,以便共享库可以加载 Web 资源。它在 iOS 上运行,但在 Android 上出现此错误:

java.lang.NoClassDefFoundError: Failed resolution of: Lio/ktor/client/HttpClientJvmKt

我猜我的构建管道正在创建一个不包含 ktor 需要的所有依赖项的 jar。所以我正在尝试使用 gradle shadow 插件(com.github.jengelman.gradle.plugins:shadow:2.0.4)制作一个胖罐子。这是我的任务:

jar 从 300Kb 跃升至 8.5Mb。

结果是一个新的错误:More than one file was found with OS independent path 'kotlinx/coroutines/CoroutineExceptionHandler.kotlin_metadata'

您会注意到我已尝试从 中排除文件shadowJar,但它不起作用。

0 投票
1 回答
276 浏览

java - Gradle 5 的多个依赖版本

es4hadoop对于 Apache Spark ,我需要支持同一库的 2 个不同版本(以支持旧版本) 。

两个版本具有相同的依赖项(scala-lang 和 Spark)。

完全不确定它的命名,但我想要类似的东西:

所以我可以在同一个项目/JVM中使用新旧弹性搜索库。

我已经知道可以relocate使用插件进行库shadowJar,但是可以重新定位特定版本吗?

0 投票
1 回答
136 浏览

gradle - 运行时类路径中不存在 Gradle Shadow 插件依赖项

shadow我使用Gradle Shadow Plugin 添加的范围配置依赖项:

依赖{影子“org.apache.flink:flink-java:$flinkVersion”}

根据文档,这个依赖不应该出现在影子 JAR 中(这是真的),它应该在编译类路径上(with 也是真的),但我对配置没有这种依赖runtimeClasspath。我究竟做错了什么?

0 投票
1 回答
605 浏览

apache-spark - Gradle:在不丢失传递依赖的情况下遮蔽番石榴

我有一个多模块 Gradle 项目。一个模块(A)包含与数据库相关的类;另一个 (B) 包含 Spark 应用程序并依赖于 A。

Spark 依赖于 Guava 14.x。我的数据库类依赖于 Guava 28.x。

我需要能够在我的数据库模块中使用 Guava 28.x,并将该模块声明为 Spark 模块中的项目依赖项。

在模块 A 中对 Guava 进行着色(和重新定位)非常简单:

但是,当我将模块 A 声明为 B 中的依赖项时,例如:

最终出现在 B 上的JAR 是 AruntimeClasspath无阴影JAR。

当我指定带阴影的 JAR 时,例如:

A 的传递依赖项在 B 上均不可用runtimeClasspath

我的目标是在模块 A 中仅对Guava 进行着色和重新定位,以最小化 JAR 大小和构建时间。然后我需要阴影 JAR 以及 B 上可用的 A 的传递依赖项runtimeClasspath

0 投票
0 回答
1092 浏览

java - 如何在没有影子插件的情况下创建 Micronaut 的 fat-jar?

最初是通过公司回购设置新的 Micronaut 项目的障碍,现在更多的是对嵌入式服务器如何引导的好奇心。我有一个带有gradle插件的Micronaut CLI 生成的项目,当我使用 -com.github.johnrengelman.shadow

build.gradle -

当我用任务和插件替换shadow插件/任务时,我可以创建一个可执行的 fat-jar ,但它失败并出现以下错误 -jarjava

build.gradle -

  1. 我想了解的是嵌入式服务器 bean 是如何被注入影子插件的,而不是其他的?
  2. 如何在fat-jar不使用com.github.johnrengelman.shadowgradle 插件的情况下创建嵌入式 Netty 服务器?
0 投票
0 回答
141 浏览

java - 着色弹性搜索高级java rest客户端

我可以遮蔽高级别的客户端吗?基本上我想在我的项目中使用最新的 Elastic Search Rest 客户端 (7.4) 和 Lucene 5.3.0 (Legacy)。

低级客户端(链接)是可能的,我想知道它是否可用于高级客户端。