Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将依赖项打包到输出jar中?_Java_Intellij Idea_Gradle_Jar - Fatal编程技术网

Java 如何将依赖项打包到输出jar中?

Java 如何将依赖项打包到输出jar中?,java,intellij-idea,gradle,jar,Java,Intellij Idea,Gradle,Jar,我试图让我的应用程序在一个独立的jar中工作。问题是,为我的程序生成了一个jar,为库生成了一堆其他jar。有没有办法把这些罐子放进去?如果有帮助的话,我正在使用Gradle IntelliJ IDEA工件配置: 输出目录: 我期望(和希望)发生的事情: 您需要一个胖jar(包含所有依赖项的jar文件)。这对Gradle来说不是什么大问题,您只需要做一个jar类型的额外任务,它将收集所有依赖项并将其压缩在一起 有很多例子,你如何做到这一点。仔细看看task fatJar: task fatJ

我试图让我的应用程序在一个独立的jar中工作。问题是,为我的程序生成了一个jar,为库生成了一堆其他jar。有没有办法把这些罐子放进去?如果有帮助的话,我正在使用Gradle

IntelliJ IDEA工件配置:

输出目录:

我期望(和希望)发生的事情:

您需要一个胖jar(包含所有依赖项的jar文件)。这对Gradle来说不是什么大问题,您只需要做一个jar类型的额外任务,它将收集所有依赖项并将其压缩在一起

有很多例子,你如何做到这一点。仔细看看task fatJar:

task fatJar(type: Jar) {        
  baseName = project.name + '-all'
  from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
  with jar
}

添加了一张我想要的结果图片。将其称为uberjar或fatjar。使用maven,这称为着色jar。与其将所有jar合并到一个胖jar中,不如将它们放在同一个文件夹中,并增强清单以指定类路径,这样当您使用
java-jar
@Andreas运行时,它们都会被加载。我想将我的软件作为一个备用文件发布。这样就简化了下载过程。它确实可以让所有的罐子都散开,但这不是我想要做的。这似乎不能正常完成:我以前从未使用过Gradle进行构建,它只是做IntelliJ IDEA默认做的任何事情。我不确定这是默认想法的行为,因为这不是standart Gradle的行为。唯一的办法就是调用gradle脚本。而且,它会把所有依赖项放在一个罐子里,但是它们会被解压。你可以在IDEA中配置构建方式,我看不到我在构建中配置的特定构建内容。gradleOk,现在我明白了,你不用gradle脚本来打包艺术品,很好。但是,无论如何,不确定是否可以按照您的意愿进行操作,因为您需要一个特定的类加载器,请看这里,如果您只需要一个jar,为什么不尝试将未压缩的类添加到jar的根中呢?我很确定,不仅可以用maven或gradle,还可以用Idea。