Maven打包jar与lib依赖包目录分离和不分离
- 前言
- 背景需求
- Maven打包jar与lib依赖包不分离
- Maven打包jar与lib依赖包分离
前言
Jar文件(Java归档,英语:Java Archive)是一种软件包文件格式,以流行的 ZIP 文件格式为基础。不仅用于压缩和发布,还用于部署和封装库、组件和插件程序以便开发Java平台应用软件或库。
背景需求
打包jar的方式有很多种:比如通过jar命令去打包,包括现在市面上常用的java开发工具idea、eclipse等,都集成了打包方法,只需配置一下即可(有需要自行上网了解),后来学习web开发接触maven,又开始用maven进行打包,只需install一下很方便,下面将网上五花八门(看的头晕)的maven配置结合我实际开发需求介绍两种打包方式
Maven打包jar与lib依赖包不分离
打包插件用的是spring-boot-maven-plugin,这个插件会把项目中的代码和相关依赖一起打包成一个jar包,我们只需哪到这个jar包发布到服务器上即可,很方便。但是jar包里面包含特别多的其他依赖,所以每次更新服务器jar包,特别费时间。
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--指定jar程序入口-->
<mainClass>com.baidu.test.App</mainClass>
</configuration>
</plugin>
</plugins>
</build>
配置好后,可以通过mvn install命令或者找到开发软件上的maven工作栏找到你要编译的项目点击install即可,然后找到你项目目录找到target文件夹打开,里面就有你刚刚打包好的jar包,50多M,很大。
我们可以通过压缩工具查看jar包的文件目录,找到BOOT-INF下lib目录,可以看到里面有很多依赖包,然后其他的文件就是一些class文件和配置文件
Maven打包jar与lib依赖包分离
为了解决jar包太打不方便发布的问题,就把jar包中的依赖和jar包分离开,在发布时如果依赖包没啥变动,就只需要发布jar包即可,这样发布速度便能优化不少
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<!-- 是否要把第三方jar加入到类构建路径 -->
<addClasspath>true</addClasspath>
<!-- 外部依赖jar包的最终位置 -->
<classpathPrefix>lib/</classpathPrefix>
<!--指定jar程序入口-->
<mainClass>com.baidu.test.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<!--拷贝依赖到jar外面的lib目录-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<!-- 拷贝项目依赖包到lib/目录下 -->
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
配置好后,可以通过mvn install命令或者找到开发软件上的maven工作栏找到你要编译的项目点击install即可,然后找到你项目目录找到target文件夹打开,里面就有你刚刚打包好的jar包和lib文件,此时jar包只有10几kb,特别小,上传速度更快了
我们再通过压缩工具查看jar包的文件目录,BOOT-INF目录已经没有了,就是一些class文件和配置文件