Java 如何在pom.xml中使用maven assembly插件构建spark应用程序时减小jar大小
我在pom.xml文件中使用以下插件:maven assembly plugin,并在同一文件中提到许多其他独立的依赖项,如下所示,使用IntelliJ为我的spark应用程序构建jar文件: pom.xml Maven汇编插件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
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>