问题标签 [fatjar]

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

java - 什么是超级罐子?

我正在阅读 Maven 文档并遇到了这个名字uber-jar

什么uber-jar意思,它的特点/优势是什么?

0 投票
1 回答
310 浏览

apache-spark - 在 Zeppelin 中加载外部 FAT-JAR 时出现 java.lang.NoSuchMethodError

  • 在尝试运行一段使用一些FAT JARs(共享一些共同点submodules)构建的代码时,sbt assembly我遇到了这个讨厌的问题java.lang.NoSuchMethodError

  • JAR是基于EMR自身构建的(而不是从其他环境上传的),因此库//等中的版本冲突不太可能SparkScala


我的EMR环境:

  • 发布标签:emr-5.11.0
  • Hadoop 发行版:亚马逊 2.7.3
  • 应用程序:Spark 2.2.1、Zeppelin 0.7.3、Ganglia 3.7.2、Hive 2.3.2、Livy 0.4.0、Sqoop 1.4.6、Presto 0.187

项目配置:

  • 斯卡拉 2.11.11
  • 火花 2.2.1
  • SBT 1.0.3
0 投票
0 回答
246 浏览

java - 使用 'maven-publish' 插件发布 jar 依赖项

我在 java 的 IntelliJ IDE 中有一个 gradle 项目。
我的依赖是这样的:

问题是当我在已发布的 jar 中发布我的项目时,我没有找到 somejar.jar 那么我该如何发布它。
我希望 someJar.jar 中的所有类都在我的主包旁边。

0 投票
3 回答
7788 浏览

gradle - Gradle:将多项目打包成一个jar

我有一个 gradle 多项目,并想创建一个包含我的子项目的所有类和外部依赖项的单个 jar(库)。

我有以下项目结构。每个项目都有自己的第 3 方依赖项。公共依赖项包含在根项目中。两个模块 A 和 B 依赖于内核。

为了导出单个 jar,我在根项目的 build.gradle 中添加了以下任务:

这种方法有效,但只收集项目源文件。忽略第 3 方依赖项。所以我尝试了 Shadow Plugin ( http://imperceptiblethoughts.com/shadow/ ),它还应该包含外部依赖项。

不幸的是,该插件根本不收集任何东西。这很可能是由于缺少根项目与其子项目之间的依赖关系。我如何告诉影子插件,它应该收集子项目的来源?或者有没有更好的方法从多个项目中导出单个库?

使用 shadow 插件完成 build.gradle:

子模块包含在根项目的 settings.gradle 中

谢谢你的帮助!

0 投票
7 回答
48935 浏览

java - 如何使用带有实现依赖项的 Gradle 创建可执行的胖 JAR?

我在 Gradle 4.6 中有一个简单的项目,并且想制作一个可执行的 JAR。我已经尝试过shadow, gradle-fatjar-plugin, gradle-one-jar,spring-boot-gradle-plugin插件,但它们都没有添加我声明为的依赖项implementation(我没有任何依赖项compile)。它适用于compile例如gradle-one-jar插件,但我想有implementation依赖关系。

0 投票
0 回答
280 浏览

gradle - Gradle 在清理后无法在 antlr 源集上创建胖 jar,否则成功

我在我的 mutliproject Gradle 构建中遇到了奇怪的行为。有问题的项目是开源的,所以欢迎那些想深入了解构建的人在这里查看,在分支开发上。

在父项目中,我定义了一个fatJar任务如下:

生成失败的一个子项目有点特殊,因为它使用了 ANTLR(我省略了依赖项和其他我认为对理解手头问题没有必要的代码)。

现在,./gradlew clean && ./gradlew fatJar从父项目中运行时,我遇到了失败,但有以下异常(为简洁起见,省略了某些部分):

系统抱怨为文件夹的文件实际上存在并且实际上是一个文件夹,但它应该确实存在。现在,让我感到困惑的是,如果./gradlew fatJar第二次调用它,它就会成功完成。这可以在不同的系统上重现,不同的 Gradle 版本(保留在 4.x 版本上)和操作系统(Arch Linux 和 MacOS X)。

0 投票
1 回答
2657 浏览

java - Gradle 构建旧版代码

我正在尝试用 gradle 构建一个胖罐,但每次我都会得到一个非常旧版本的程序。直接在 IntelliJ 中从 main 运行程序可以正常工作,因此 gradle 构建本身不起作用。当我在(项目路径)/build/libs 中检查 jar 时,文件的日期和时间已更改,因此它确实构建了,但是当我启动它时,我得到了一个月前的构建。我怀疑可能有一些缓存导致了这种情况,但我不知道它在哪里。

构建.gradle

设置.gradle

命令

0 投票
1 回答
536 浏览

maven - 控制将罐子添加到阴影罐子的顺序

我发现 Confluent Kafka Connect 插件只有在 jar 以特定顺序添加到类路径时才有效。

因此,我正在尝试构建一个包含 jar 的单个阴影 jar,以相同的顺序选择冲突的类。

我的问题是如何控制将罐子添加到阴影罐子的顺序?

我发现Maven按以下顺序处理jar:

  1. 我的 pom 中指定的第一个依赖项
  2. 从1开始的pom的依赖关系,按照它们出现在pom中的顺序,除非我的pom中存在依赖关系,在这种情况下它会等到轮到它
  3. 我的 pom 中的下一个依赖项
  4. 2 但至于先前的依赖
  5. 迭代 3-5 直到处理完所有依赖项。

我相信这是基于订单罐子列在下面的列表中(包括用于识别的列表;我已将其截断,因为它不是特别有启发性):

我的阴影插件片段:

(这还不是罐子的完整列表)。

从上面可以看出,jar处理的顺序并没有按照include标签的顺序。

0 投票
0 回答
43 浏览

java - 从模糊的 jar 和库 jar 依赖项创建 fatjar?

我有一个 fatjar,它是一个可部署的 jar,定义了 main 方法,并且通过 gradle 复制了哪些依赖项。

这工作正常。

我想混淆/加密我的罐子。

使用 proguard 我可以混淆 myJar,并指定 libraryjars。如何从混淆的 jar 及其依赖项中创建一个 farJar?

到目前为止,我只能对原始 jar 进行模糊处理,而不能将其作为胖 jar 进行模糊处理和捆绑。

我的 proguard 任务看起来与示例几乎相同,库 jar 不会作为 fatJar 添加到 jar 中。而且我不想定义很多不混淆 injars 的规则,如果我只是混淆整个 fatjar 我可以做到吗?

0 投票
0 回答
236 浏览

java - Gradle Fatjar 构建错误

我正在尝试使用eu.appsatori.fatjar插件创建一个 fatJar。

出于某种原因,我不断收到此错误:

Caused by: org.gradle.api.GradleException: Could not expand ZIP '/Users/xxx/.gradle/caches/modules-2/files-2.1/org.apache.storm/storm-core/0.10.0/59bc38e472630eecfe41fec4bd3cc346626a3f24/storm-core-0.10.0.jar'.

Caused by: org.gradle.api.GradleException: Could not copy zip entry /Users/xxx/.gradle/caches/modules-2/files-2.1/org.apache.storm/storm-core/0.10.0/59bc38e472630eecfe41fec4bd3cc346626a3f24/storm-core-0.10.0.jar!META-INF/license/ to '/Users/xxx/path/projectName/build/tmp/expandedArchives/storm-core-0.10.0.jar_awree5slcpd7gxsjwz6rwpmop/META-INF/license'.

Caused by: org.gradle.api.UncheckedIOException: Cannot create directory '/Users/xxx/path/projectName/build/tmp/expandedArchives/storm-core-0.10.0.jar_awree5slcpd7gxsjwz6rwpmop/META-INF/license' as it already exists, but is not a directory

我已经在我的 gradle 文件中排除了一堆东西:

但它仍然无法正常工作,有谁知道什么可以解决这个错误?