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

相关推荐
认真的酒窝5 小时前
自己动手开发编译器(十一)语义分析
java·开发语言
wbs_scy6 小时前
Linux C++ 高并发编程:线程池全链路深度解析,从原理到手撕实现
java·开发语言
JAVA面经实录9176 小时前
Linux 常用命令完整知识体系
java·linux·开发语言·汇编
Full Stack Developme8 小时前
Java LRU 与 LFU 算法及应用
java·开发语言·算法
程序员老油条10 小时前
WSL2 + Docker Desktop:Windows 下的完美 Java 开发环境
java·windows·docker·wsl2
shushangyun_11 小时前
2026智能采购商城系统选型指南:如何引领企业数字化采购升级
java·大数据·数据库·人工智能·机器学习
她说..11 小时前
Java 默认值设置方式
java·开发语言·后端·springboot
学渣超11 小时前
记一次分布式事务数据不一致的排查之旅:从超时到索引,层层剥茧
java·后端·架构
掉鱼的猫12 小时前
Agent Harness 实战指南:构建生产级 AI Agent 的"马具"框架
java·llm·aigc
带刺的坐椅12 小时前
Agent Harness 实战指南:构建生产级 AI Agent 的"马具"框架
java·ai·llm·agent·solon-ai