maven打包把所有依赖的jar copy到一个文件夹

在maven项目中,是使用依赖坐标来引入jar包,在引入jar包的时候,maven也会默默的帮助我们导入这个jar包所依赖的jar包。

但是当我们打包项目使用jar包运行的时候,往往会出现缺少jar的情况:

如果我们一个一个添加缺少的jar包到classpath下就会很麻烦,而且我们也不知到maven默默帮我们添加了哪些jar包。

这时候我们就可以把项目所有依赖的jar包,包括maven默默帮我们添加的jar包copy复制到一个目录里面,比如lib。我只需要配置一下maven的pom.xml就可以了:

pom.xml添加插件:

xml 复制代码
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.3.0</version>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>

                        <configuration>
                            <!-- 打包生成的文件名 -->
                            <finalName>${project.artifactId}</finalName>
                            <!-- jar 等压缩文件在被打包进入 zip、tar.gz 时是否压缩,设置为 false 可加快打包速度 -->
                            <recompressZippedFiles>false</recompressZippedFiles>
                            <!-- 打包生成的文件是否要追加 release.xml 中定义的 id 值 -->
                            <appendAssemblyId>true</appendAssemblyId>
                            <!-- 指向打包描述文件 package.xml -->
                            <descriptors>
                                <descriptor>package.xml</descriptor>
                            </descriptors>
                            <!-- 打包结果输出的基础目录 -->
                            <outputDirectory>${project.build.directory}/</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

上面我们配置一个 指向打包描述文件 package.xml,所以我们要添加一个package.xml放到pom.xml的同级目录下:

xml 复制代码
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
	
	<!-- 
		assembly 打包配置更多配置可参考官司方文档:
			http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html
	 -->
	
	<id>release</id>
	
	<!--
		设置打包格式,可同时设置多种格式,常用格式有:dir、zip、tar、tar.gz
			dir 格式便于在本地测试打包结果
			zip 格式便于 windows 系统下解压运行
			tar、tar.gz 格式便于 linux 系统下解压运行
	 -->
	<formats>
		<format>dir</format>
		<!-- <format>zip</format> -->
		<format>tar.gz</format>
	</formats>
	
	<!-- 打 zip 设置为 true 时,会在 zip 包中生成一个根目录,打 dir 时设置为 false 少层目录 -->
	<includeBaseDirectory>true</includeBaseDirectory>

	
	<!-- 依赖的 jar 包 copy 到 lib 目录下 -->
	<dependencySets>
		<dependencySet>
			<outputDirectory>lib</outputDirectory>			
		</dependencySet>
	</dependencySets>
	
</assembly>

这样配置完之后在打包maven就会帮我们把项目所有依赖的jar包,包括maven默默帮我们添加的jar包copy复制到一个lib目录下面了:

再次运行就可以了。

打包配置更多配置可参考官司方文档:

http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html

相关推荐
掐指一算乀缺钱19 分钟前
SpringBoot 数据库表结构文档生成
java·数据库·spring boot·后端·spring
晚睡早起₍˄·͈༝·͈˄*₎◞ ̑̑24 分钟前
苍穹外卖学习笔记(七)
java·windows·笔记·学习·mybatis
就这个java爽!30 分钟前
JAVA网络编程【基于TCP和UDP协议】超详细!!!
java·开发语言·网络·tcp/ip·udp·eclipse·idea
一叶飘零_sweeeet34 分钟前
为什么 Feign 要用 HTTP 而不是 RPC?
java·网络协议·http·spring cloud·rpc·feign
懒洋洋大魔王1 小时前
7.Java高级编程 多线程
java·开发语言·jvm
茶馆大橘1 小时前
【黑马点评】已解决java.lang.NullPointerException异常
java·开发语言
星辰@Sea1 小时前
服务注册中心对比及使用场景分析
java·云原生
马剑威(威哥爱编程)1 小时前
除了递归算法,要如何优化实现文件搜索功能
java·开发语言·算法·递归算法·威哥爱编程·memoization
bug菌¹1 小时前
滚雪球学SpringCloud[4.1讲]: Spring Cloud Gateway详解
java·spring cloud·微服务
MuseLss1 小时前
HashMap高频面试知识点
java·开发语言·哈希算法