问题标签 [shadowjar]

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 投票
2 回答
3002 浏览

scala - 使用 shadowJar 和 Scala 依赖项时如何修复丢失的 conf 文件?

为像我这样有未来问题的用户写这篇文章。基于 Typesafe 配置构建的库通常使用自己的reference.conf文件并引用某些配置键。使用 GradleshadowJAR插件构建胖 JAR 时,不包括这些文件。

当胖 JAR 尝试运行时,Spray 和 Akka 等依赖项会引发错误。错误看起来像:

如何解决这个问题?检查下面的答案。

0 投票
0 回答
259 浏览

java - 如何创建一个将依赖项组合在一个 jar 中的 gradle 项目?

我正在尝试创建一个 gradle 项目,它将一些依赖项组合在一个混淆的 jar 中(现在,我不关心混淆的部分)。这些依赖项是其他 gradle 项目,在 settings.gradle 中定义。

我的项目不直接包含任何代码。

我正在尝试使用 shadowJar 插件生成一个包含依赖项的“胖”jar。我希望这个 jar 成为项目的默认输出 jar(替换 jar 任务?)。

目标是能够将此组合项目添加为其他项目的依赖项,使用compile project(:'MyCombinedProject')它将生成的胖 jar 添加为依赖项。

我的 build.gradle:

我的项目路径在settings.gradle.

0 投票
0 回答
1185 浏览

jakarta-ee - Gradle shadowJar 编译依赖

我有一个毕业项目。有一个根 Gradle 文件夹,其中包含两个子项目 - common 和 application。

常见的

  • 通过 ShadowJar 输出包含所有 jar 依赖项的 JAR 文件
  • 仅具有来自 Maven 中央存储库的依赖项,没有其他依赖项

应用

  • 输出 WAR 文件
  • 具有 Common 的 shadowJar 作为依赖项。
  • 具有来自 Maven 中央存储库的其他依赖项

我想要达到的目标

当我在应用程序上运行gradle war时,我想创建一个包含所有 Maven 依赖项的 jar,以及 Common 项目的 ShadowJar。

问题出在 ShadowJar 部分。在Application 上执行gradle war时,Common 中没有构建工件。我想建立 shadowJar 并将其包含在战争中。

当前解决方案 我将此添加到 root 的 build.gradle

在 Application/build.gradle 中,我还有一行

然后我在 root 上运行构建任务。不知何故,首先构建了公共项目,并将 ShadowJar 包含在应用程序的 WAR 中。

这远非最佳。我希望将 Application 对 Common 的依赖定义为 compile project(':common') 而不是指向固定的文件名。但是,“编译项目”语句显然不会在 Common 模块中生成 shadowJar,并且不会将其包含在 Application 模块中的 WAR 中。

0 投票
2 回答
369 浏览

gradle - 使用构建参数控制 gradle 运行时依赖项

我使用 Gradle 及其 ShadowJar 插件为我的应用程序构建了一个胖 jar,该应用程序部署在两个上下文之一中。

在一种情况下,环境提供了依赖项 A、B 和 C(以及它们所有的传递依赖项),这些类不应该是我的胖 jar 的一部分。

在另一种情况下,环境仅提供依赖项 A 和 B,我必须确保 C 及其所有传递依赖项都捆绑在我的 fat jar 中。

如何在我的 Gradle 构建文件中定义此行为?runtime.exclude我认为最好的方法是根据构建目标或命令行参数以某种方式调整属性。

0 投票
1 回答
2222 浏览

gradle - 在 fat JAR 中包含源

我将 Gradle 用于一个简单的 Java 项目,并希望生成一个单独的胖 JAR,其中还包含源代码。

我准备了一个示例存储库:https ://github.com/szarnyasg/gradle-shadowjar-source 。我试过这个build.gradle配置:

我可以用:

这会在build/libs目录中生成两个 JAR 文件:

  • example-fat.jar- 没有来源的胖 JAR
  • example.jar- 带有(仅)源的 JAR

Gradle Shadow 插件的文档指出

在存在javagroovy插件的情况下,Shadow 会自动配置以下行为:

[...]

  • 将任务配置shadowJar为包括项目主 sourceSet 中的所有源。

对我来说,这意味着源包含在生成的 JAR 中,但这可能不是它的意思。

是否可以从 Gradle 生成一个可执行的胖 JAR,其中还包含源代码?

0 投票
2 回答
3078 浏览

java - 如何将测试类包含到 shadowJar 中?

我正在使用 shadow Gradle 插件来构建 JAR,其中包含所有引用的 jar。

在我的build.gradle我只有

与此有关。我不知道,它是如何知道的,要构建什么,但它确实有效。

现在,是否也可以包含测试类?

0 投票
2 回答
5619 浏览

gradle - 什么是 .kotlin_builtins 文件,我可以从我的 uberjars 中省略它们吗?

我正在为用 Kotlin 编写的应用程序将 proguard 集成到我的 gradle 构建中。我发现 proguard 正在剥离 Kotlin 标准库(在我的简单 Hello World 程序中应该如此),但它在我的 jar 中留下了一堆文件扩展名为.kotlin_builtins. 当我配置我的 gradle 任务以排除这些文件时,该程序似乎仍然可以正常工作。这些文件是什么,它们必须与我的可执行 uberjar 一起提供吗?

这是我的build.gradle文件内容供参考:

0 投票
1 回答
1883 浏览

gradle - Gradle :: runtime.exclude group: 'org.apache.hadoop' 影响测试范围?

我的 build.gradle 中有以下内容:

由于某种原因,这也将所有 Hadoop/Spark 代码从测试类路径中排除。如果我注释掉这个配置 - 测试通过正常,否则我会遇到各种各样的java.lang.NoClassDefFoundError: org/apache/hadoop/hdfs/MiniDFSCluster$Builder问题。

我试着用这个:

}

没运气。

我在这里想念什么?

0 投票
1 回答
514 浏览

java - Heroku Java 应用程序在本地崩溃但不在网络上

我有我的主要课程:

我的过程文件:

注意:我使用的是 shadowJar,因为正常的 jar 创建不包括我需要的依赖项,例如 Spark 和 Firebase。

现在,如果我这样做:

然后转到localhost:5000,我收到 404 错误。但是,应用程序实际上并没有崩溃。它一直在运行。

这与我这样做时不同:

git add .,git commit -m "x"和 a之后git push heroku master

哪个崩溃并出现“应用程序错误”并给我这个:

这些是我得到的唯一错误。之前的错误是昨天的日志。

我不确定是什么问题。我怀疑它与shadowJar. 但我不确定。

0 投票
1 回答
1089 浏览

gradle - Gradle ShadowJar 输出包含混淆和非混淆类

在我简单的 gradle 构建中,我想一起使用 ShadowJar 和 ProGuard。我找到了一些示例,其中 shadowJar 任务的输出是 proguard 的输入,效果很好,但是在我的情况下,我希望首先创建一个小的混淆 jar,在那里我很好地指定了库依赖项并让 proguard 只关注在我的代码上,然后我想将它传递给用于 fatjar 打包的 shadowjar 插件。

我的设置如下:

我的问题是 shadowJar 输出包含所有未混淆的库(很好)、我的混淆代码(很好)和我的未混淆代码。所以不知何故,原来的课程偷偷溜进来,我不明白这是怎么回事。我无法指定 shadowJar 将依赖项和 proguard 输出 jar 打包在一起。

您看到我的方法中的问题在哪里吗?