问题标签 [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.
java - 什么是超级罐子?
我正在阅读 Maven 文档并遇到了这个名字uber-jar
。
什么uber-jar
意思,它的特点/优势是什么?
apache-spark - 在 Zeppelin 中加载外部 FAT-JAR 时出现 java.lang.NoSuchMethodError
在尝试运行一段使用一些
FAT JARs
(共享一些共同点submodules
)构建的代码时,sbt assembly
我遇到了这个讨厌的问题java.lang.NoSuchMethodError
它
JAR
是基于EMR
自身构建的(而不是从其他环境上传的),因此库//等中的版本冲突不太可能Spark
Scala
我的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
java - 使用 'maven-publish' 插件发布 jar 依赖项
我在 java 的 IntelliJ IDE 中有一个 gradle 项目。
我的依赖是这样的:
问题是当我在已发布的 jar 中发布我的项目时,我没有找到 somejar.jar 那么我该如何发布它。
我希望 someJar.jar 中的所有类都在我的主包旁边。
gradle - Gradle:将多项目打包成一个jar
我有一个 gradle 多项目,并想创建一个包含我的子项目的所有类和外部依赖项的单个 jar(库)。
我有以下项目结构。每个项目都有自己的第 3 方依赖项。公共依赖项包含在根项目中。两个模块 A 和 B 依赖于内核。
为了导出单个 jar,我在根项目的 build.gradle 中添加了以下任务:
这种方法有效,但只收集项目源文件。忽略第 3 方依赖项。所以我尝试了 Shadow Plugin ( http://imperceptiblethoughts.com/shadow/ ),它还应该包含外部依赖项。
不幸的是,该插件根本不收集任何东西。这很可能是由于缺少根项目与其子项目之间的依赖关系。我如何告诉影子插件,它应该收集子项目的来源?或者有没有更好的方法从多个项目中导出单个库?
使用 shadow 插件完成 build.gradle:
子模块包含在根项目的 settings.gradle 中
谢谢你的帮助!
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
依赖关系。
gradle - Gradle 在清理后无法在 antlr 源集上创建胖 jar,否则成功
我在我的 mutliproject Gradle 构建中遇到了奇怪的行为。有问题的项目是开源的,所以欢迎那些想深入了解构建的人在这里查看,在分支开发上。
在父项目中,我定义了一个fatJar
任务如下:
生成失败的一个子项目有点特殊,因为它使用了 ANTLR(我省略了依赖项和其他我认为对理解手头问题没有必要的代码)。
现在,./gradlew clean && ./gradlew fatJar
从父项目中运行时,我遇到了失败,但有以下异常(为简洁起见,省略了某些部分):
系统抱怨为文件夹的文件实际上存在并且实际上是一个文件夹,但它应该确实存在。现在,让我感到困惑的是,如果./gradlew fatJar
第二次调用它,它就会成功完成。这可以在不同的系统上重现,不同的 Gradle 版本(保留在 4.x 版本上)和操作系统(Arch Linux 和 MacOS X)。
java - Gradle 构建旧版代码
我正在尝试用 gradle 构建一个胖罐,但每次我都会得到一个非常旧版本的程序。直接在 IntelliJ 中从 main 运行程序可以正常工作,因此 gradle 构建本身不起作用。当我在(项目路径)/build/libs 中检查 jar 时,文件的日期和时间已更改,因此它确实构建了,但是当我启动它时,我得到了一个月前的构建。我怀疑可能有一些缓存导致了这种情况,但我不知道它在哪里。
构建.gradle
设置.gradle
命令
maven - 控制将罐子添加到阴影罐子的顺序
我发现 Confluent Kafka Connect 插件只有在 jar 以特定顺序添加到类路径时才有效。
因此,我正在尝试构建一个包含 jar 的单个阴影 jar,以相同的顺序选择冲突的类。
我的问题是如何控制将罐子添加到阴影罐子的顺序?
我发现Maven按以下顺序处理jar:
- 我的 pom 中指定的第一个依赖项
- 从1开始的pom的依赖关系,按照它们出现在pom中的顺序,除非我的pom中存在依赖关系,在这种情况下它会等到轮到它
- 我的 pom 中的下一个依赖项
- 2 但至于先前的依赖
- 迭代 3-5 直到处理完所有依赖项。
我相信这是基于订单罐子列在下面的列表中(包括用于识别的列表;我已将其截断,因为它不是特别有启发性):
我的阴影插件片段:
(这还不是罐子的完整列表)。
从上面可以看出,jar处理的顺序并没有按照include
标签的顺序。
java - 从模糊的 jar 和库 jar 依赖项创建 fatjar?
我有一个 fatjar,它是一个可部署的 jar,定义了 main 方法,并且通过 gradle 复制了哪些依赖项。
这工作正常。
我想混淆/加密我的罐子。
使用 proguard 我可以混淆 myJar,并指定 libraryjars。如何从混淆的 jar 及其依赖项中创建一个 farJar?
到目前为止,我只能对原始 jar 进行模糊处理,而不能将其作为胖 jar 进行模糊处理和捆绑。
我的 proguard 任务看起来与示例几乎相同,库 jar 不会作为 fatJar 添加到 jar 中。而且我不想定义很多不混淆 injars 的规则,如果我只是混淆整个 fatjar 我可以做到吗?
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 文件中排除了一堆东西:
但它仍然无法正常工作,有谁知道什么可以解决这个错误?