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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • Java设计模式之单例模式详解

    Java设计模式之单例模式详解

    这篇文章主要为大家详细介绍了Java设计模式之单例模式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Mybatis TypeHandler接口及继承关系示例解析

    Mybatis TypeHandler接口及继承关系示例解析

    这篇文章主要为大家介绍了Mybatis TypeHandler接口及继承关系示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Springboot Thymeleaf字符串对象实例解析

    Springboot Thymeleaf字符串对象实例解析

    这篇文章主要介绍了Springboot Thymeleaf字符串对象实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2007-09-09
  • java——多线程基础

    java——多线程基础

    Java多线程实现方式有两种,第一种是继承Thread类,第二种是实现Runnable接口,两种有很多差异,下面跟着本文一起学习吧,希望能给你带来帮助
    2021-07-07
  • SpringCache缓存自定义配置的实现

    SpringCache缓存自定义配置的实现

    本文主要介绍了SpringCache缓存自定义配置的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • SpringBoot整合PageHelper实现分页查询功能详解

    SpringBoot整合PageHelper实现分页查询功能详解

    PageHelper是mybatis框架的一个插件,用于支持在mybatis执行分页操作。本文将通过SpringBoot整合PageHelper实现分页查询功能,需要的可以参考一下
    2022-03-03
  • 5分钟快速搭建SpringBoot3 + MyBatis-Plus工程/项目的实现示例

    5分钟快速搭建SpringBoot3 + MyBatis-Plus工程/项目的实现示例

    本文主要介绍了使用IntelliJ IDEA创建Spring Boot工程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • MVC AOP面向切面编程简单介绍及实例

    MVC AOP面向切面编程简单介绍及实例

    这篇文章主要介绍了MVC AOP面向切面编程简单介绍及实例的相关资料,需要的朋友可以参考下
    2016-12-12
  • springboot3.X 无法解析parameter参数问题分析

    springboot3.X 无法解析parameter参数问题分析

    本文介绍了Spring Boot 3.2.1版本中调用接口时出现的参数解析问题,该错误是由Spring新版本加强的错误校验和报错提示导致的,在Spring 6.1之后,官方要求URL中的传参必须使用`@PathVariable`声明用于接收的变量,而不能省略`@RequestParam`注解,感兴趣的朋友一起看看吧
    2025-03-03
  • Java利用Jsoup解析和操作HTML的技术指南

    Java利用Jsoup解析和操作HTML的技术指南

    在现代 Java 开发中,处理 HTML 数据是一项常见需求,无论是抓取网页数据、解析 HTML 文档,还是操作 DOM 树,Jsoup 都是一个强大的工具,本文将介绍 Jsoup 的基本功能,并通过多个详细的代码示例展示如何使用它解析和操作 HTML,需要的朋友可以参考下
    2025-03-03

最新评论