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文件和配置文件
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_39940674/article/details/117417398