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

相关推荐
没有bug.的程序员1 分钟前
Async Profiler:最精准的火焰图工具
java·jvm·spring·对象分配·async profiler
金士顿7 分钟前
Ethercat耦合器添加的IO导出xml 初始化IO参数
android·xml·java
7哥♡ۣۖᝰꫛꫀꪝۣℋ13 分钟前
Spring WebMVC及常用注释
java·数据库·spring
曹牧15 分钟前
C#:Dictionary类型数组
java·开发语言·c#
躺着听Jay15 分钟前
【1267 - Illegal mix of collations 】mysql报错解决记录
java·linux·前端
bbq粉刷匠19 分钟前
力扣-电话号码组合
java·算法
xunyan623419 分钟前
面向对象(下)-模版方法的设计模式其应用场景
java·学习·设计模式
Yweir23 分钟前
Linux性能监控的工具集和分析命令工具
java·linux·jvm
Dxxyyyy27 分钟前
零基础学JAVA--Day41(IO文件流+IO流原理+InputStream+OutputStream)
java·开发语言·python
狗头实习生28 分钟前
电话号码字母组合
java·算法·leetcode