Maven打包jar(lib目录分离和不分离)的两种方式

 更新时间:2024年07月30日 09:56:03   作者:成为大佬先秃头  
打包jar的方式有很多种,本文主要介绍了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文件和配置文件

在这里插入图片描述

到此这篇关于Maven打包jar(lib目录分离和不分离)的文章就介绍到这了,更多相关Maven打包jar内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • Jmeter的接口测试详细步骤并实现业务闭环

    Jmeter的接口测试详细步骤并实现业务闭环

    这篇文章主要介绍了Jmeter的接口测试详细步骤并实现业务闭环,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • java读取csv文件和写csv示例分享

    java读取csv文件和写csv示例分享

    这篇文章主要介绍了JAVA对CSV格式文本数据处理后再保存成新CSV格式文本的模板,可以学习到java读取csv文件和写csv的方法,需要的朋友可以参考下
    2014-03-03
  • 基于springboot实现一个简单的aop实例

    基于springboot实现一个简单的aop实例

    这篇文章主要介绍了基于springboot实现一个简单的aop,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-11-11
  • java多态的向上转型的概念及实例分析

    java多态的向上转型的概念及实例分析

    在本篇内容里小编给大家整理的是一篇关于java多态的向上转型的概念及实例分析,对此有兴趣的朋友们可以跟着学习下。
    2021-05-05
  • Java SSM框架(Spring+SpringMVC+MyBatis)搭建过程

    Java SSM框架(Spring+SpringMVC+MyBatis)搭建过程

    最近一段时间搭建了ssm环境,并测试了几个小项目,下面小编通过图文并茂的形式给大家分享Java SSM框架(Spring+SpringMVC+MyBatis)搭建过程,需要的朋友参考下吧
    2017-11-11
  • Java中多线程与并发_volatile关键字的深入理解

    Java中多线程与并发_volatile关键字的深入理解

    这篇文章主要给大家介绍了关于Java中多线程与并发_volatile关键字的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Java实现简单QQ聊天工具

    Java实现简单QQ聊天工具

    这篇文章主要为大家详细介绍了Java实现简单QQ聊天工具,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • IDEA中的打包Build Artifacts图文详解

    IDEA中的打包Build Artifacts图文详解

    当项目开发完毕,需要对外发布时,我们就会用到IDEABuild Artifacts功能,那么如果在idea中打包呢,这篇文章主要介绍了IDEA中的打包Build Artifacts详解,需要的朋友可以参考下
    2024-03-03
  • spring boot Rabbit高级教程(最新推荐)

    spring boot Rabbit高级教程(最新推荐)

    RabbitMQ的消息过期是基于追溯方式来实现的,也就是说当一个消息的TTL到期以后不一定会被移除或投递到死信交换机,而是在消息恰好处于队首时才会被处理,本篇文章给大家介绍spring boot Rabbit高级教程,感兴趣的朋友一起看看吧
    2023-10-10
  • java实现二分法的完整代码

    java实现二分法的完整代码

    这篇文章主要为大家详细介绍了java实现二分法的完整代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11

最新评论