Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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 如何在pom.xml中使用maven assembly插件构建spark应用程序时减小jar大小_Java_Maven_Intellij Idea_Pom.xml_Maven Assembly Plugin - Fatal编程技术网

Java 如何在pom.xml中使用maven assembly插件构建spark应用程序时减小jar大小

Java 如何在pom.xml中使用maven assembly插件构建spark应用程序时减小jar大小,java,maven,intellij-idea,pom.xml,maven-assembly-plugin,Java,Maven,Intellij Idea,Pom.xml,Maven Assembly Plugin,我在pom.xml文件中使用以下插件:maven assembly plugin,并在同一文件中提到许多其他独立的依赖项,如下所示,使用IntelliJ为我的spark应用程序构建jar文件: pom.xml Maven汇编插件 maven汇编插件 2.5.3 带有依赖项的jar 组装 包裹 单一的 pom.xml 其他依赖项: 亚马逊网站 aws java sdk emr 1.11.125 亚马逊网站 aws-java-sdk-s3 1.11.106 举几个例子 发生的事情是,这个ma

我在pom.xml文件中使用以下插件:maven assembly plugin,并在同一文件中提到许多其他独立的依赖项,如下所示,使用IntelliJ为我的spark应用程序构建jar文件:

pom.xml Maven汇编插件


maven汇编插件
2.5.3
带有依赖项的jar
组装
包裹
单一的
pom.xml 其他依赖项:


亚马逊网站
aws java sdk emr
1.11.125
亚马逊网站
aws-java-sdk-s3
1.11.106
举几个例子

发生的事情是,这个maven程序集插件将所有依赖项jar与主jar文件捆绑在一起,最终jar文件的大小超过150+Mb

有没有一种方法可以让我只提到pom.xml中的一个特定依赖项,并将其包含在最终的jar文件中,而排除所有其他依赖项

如果jar中只包含这个依赖项,那么最终的jar大小应该会降到1MB以下

我想在最后一个jar中包含的特定依赖项如下所示:

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20200518</version>
</dependency>

org.json
json
20200518

您知道maven作用域吗?如果您想在最终的jar中只包含特定的依赖项,您必须删除依赖项(一个选项),另一个选项是检查您真正需要在jar中包含哪些内容,而不是在构建时使用哪些内容(作用域:已提供)@khmarbaise如果我从pom文件中删除这些其他依赖项……会对应用程序的运行方式产生任何影响吗?还有@Thorbjørnravandersen我不知道maven作用域!!需要检查一下,如果你移除了东西当然。。。但问题是:您真的需要在运行时使用所有给定的dep吗?也许你只在构建时需要它们?(范围:提供)
<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-emr</artifactId>
    <version>1.11.125</version>
</dependency>

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-s3</artifactId>
    <version>1.11.106</version>
</dependency>
<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20200518</version>
</dependency>