概述
1.问题来源
项目搭建完成之后,往往需要打成Jar包进行部署。单模块项目还好,但是一旦遇到多模块项目,打完之后每个能启动的模块都会有一个Jar包,为了保证Jar包能够单独启动,Maven会将所有在pom.xml里面关联的依赖(包括继承自父模块)都整合进Jar包。
这样会带来一个问题,打出的Jar包体积比较大,但这几个项目引入的外部差异化Jar包可能并不是很多,有很多Jar包其实是可以共用的(比如spring自带的启动包),在同一个地点部署的前提下,每个Jar包里面都包含这些依赖包其实是重复的。那么有什么办法能够使这些依赖进行复用呢,今天我们就来探讨一下这个问题。
2.手动去除插件
我们可能会想到既然公共的Jar包重复了,那么就直接去除公共Jar包就行了。而在spring boot maven里面,给出的去除方法是这样的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>
1.5
.
1
.RELEASE</version>
<configuration>
<layout>ZIP</layout>
<excludes>
<exclude>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclude>
<exclude>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
|
没错......这样就有一个很严重的问题.....那就是每个Jar包都得自己手动去除.....
我们当然要寻找更好的解决方案,事实上的确有更好的替代,那就是下面提到的插件。
3.利用插件帮助去除依赖
我们可以在项目的启动类(如果有多个启动类那就在这些启动类的总父类)里添加这样一个插件
1
2
3
4
5
6
7
8
9
10
11
12
|
<!--jar包压缩插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot.experimental</groupId>
<artifactId>spring-boot-thin-layout</artifactId>
<version>
1.0
.
8
.RELEASE</version>
</dependency>
</dependencies>
</plugin>
|
然后我们打完包就会发现jar包神奇的变成了
体积骤降的原因是因为其中的依赖包都被剥离了,自然这样的包是不能直接运行的,会报错
我们需要在jar包同级目录下运行指令
1
|
java -Dthin.root=lib -jar IDKProxy.jar
|
这样根据插件打出的jar包会自动的下载依赖到你用Dthin.root指定的文件夹中
程序也会自动运行,在存在加载好的lib依赖包的前提下,下次直接运行只要直接:java -jar jar包名 就可以直接运行了
如果其他jar包依赖相同,那也可以直接运行,不同的话只要将不同的依赖放入lib就行了
最后
以上就是忧心可乐为你收集整理的Jar包优化-去除内置的依赖Jar包1.问题来源2.手动去除插件3.利用插件帮助去除依赖的全部内容,希望文章能够帮你解决Jar包优化-去除内置的依赖Jar包1.问题来源2.手动去除插件3.利用插件帮助去除依赖所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复