项目打成Jar包几种方法Maven

一、可执行Jar与依赖包分开

<!--可执行jar与依赖分开,依赖在lib目录里-->

<!--打jar包的插件,把整个maven工程打成jar包-->
<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-jar-plugin</artifactId>
	<configuration>
		<classesDirectory>target/classes</classesDirectory>
		<archive>
			<manifest>
				<!--这个属性特别关键,如果没有这个属性,有时候我们引用的包maven库
                下面可能会有多个包,并且只有一个是正确的,其余的可能是带时间戳的,
                此时会在classpath下面把那个带时间戳的给添加上去,然后我们
                在依赖打包的时候,打的是正确的,所以两头会对不上,报错。-->
				<useUniqueVersions>false</useUniqueVersions>
				<!-- 为依赖包添加路径, 这些路径会写在MANIFEST文件的Class-Path下 -->
				<addClasspath>true</addClasspath>
				<!--add start-->
				<!-- 这个jar所依赖的jar包添加classPath的时候的前缀,如果这个
                jar本身和依赖包在同一级目录,则不需要添加-->
				<classpathPrefix>lib/</classpathPrefix>
				<!-- jar启动入口类-->
				<mainClass>com.test.Test</mainClass>
			</manifest>
		</archive>
		<!-- jar包的位置-->
		<outputDirectory>../../build</outputDirectory>
		<!--打包出来的文件名,可以不填写,有默认值-->
		<finalName>${name}</finalName>
	</configuration>
</plugin>

<!--用来拷贝项目所有依赖的插件-->
<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-dependency-plugin</artifactId>
	<executions>
		<!-- 一个execution就是一个目标输入位置,如果想把各种资源拆开放的话,就
        可以创建多个execution,一个资源文件可以被拷贝多份 -->
		<execution>
			<id>copy-dependencies</id>
			<phase>package</phase>
			<goals>
				<goal>copy-dependencies</goal>
			</goals>
			<configuration>
				<type>jar</type>
				<includeTypes>jar</includeTypes>
				<!-- 拷贝项目依赖包到lib/目录下 -->
				<outputDirectory>../../build/lib</outputDirectory>
			</configuration>
		</execution>
	</executions>
</plugin>

 

二、依赖Jar包打进当前可执行jar包

<!--依赖打入一个Jar包方法1 推荐使用-->
<!--所有依赖打到一个jar包,transform部分自定义 -->
<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-shade-plugin</artifactId>
	<version>2.4.3</version>
	<executions>
		<execution>
			<phase>package</phase>
			<goals>
				<goal>shade</goal>
			</goals>
			<configuration>
				<!-- 过滤掉以下文件,不打包 :解决包重复引用导致的打包错误-->
				<filters>
					<filter>
						<artifact>*:*</artifact>
						<excludes>
							<exclude>META-INF/*.SF</exclude>
							<exclude>META-INF/*.DSA</exclude>
							<exclude>META-INF/*.RSA</exclude>
						</excludes>
					</filter>
				</filters>
				<transformers>
					<!--指定启动类Maim方法-->
					<transformer
                                       implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
						<mainClass>com.XXX.XXX.Class</mainClass>
					</transformer>
					<!--spring.handlers 和 spring.schemas 文件以 append 方式加入到构建的 jar 包中,这样就不会出现 xsd 找不到的情况。-->
					<transformer
                                        implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
						<resource>META-INF/spring.handlers</resource>
					</transformer>
					<transformer
                                        implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
						<resource>META-INF/spring.schemas</resource>
					</transformer>
					<transformer
                                        implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
						<resource>META-INF/spring.tooling</resource>
					</transformer>
				</transformers>
			</configuration>
		</execution>
	</executions>
</plugin>

 

三、依赖打进可执行Jar包方法二

<!--依赖打入一个Jar包方法2 -->

<plugin>
	<artifactId>maven-assembly-plugin</artifactId>
	<configuration>
		<descriptorRefs>
			<descriptorRef>jar-with-dependencies</descriptorRef>
		</descriptorRefs>
		<archive>
			<manifest>
				<mainClass>com.XXX.XXX.Test</mainClass>
			</manifest>
		</archive>
	</configuration>
	<executions>
		<execution>
			<id>make-assembly</id>
			<phase>package</phase>
			<goals>
				<goal>single</goal>
			</goals>
		</execution>
	</executions>
</plugin>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值