使用maven打可执行jar包的两种方式
前言
打可执行包有两种方式:
- 将所有依赖jar的class文件和本地编写的代码一起打包为1个jar包
- 将依赖包和本地编写的代码分开打包,把包结果会有多个jar
maven针对这两种打包方式也有这对应的解决方案, 以下两种方式均只需在pom.xml中增加该代码即可打出可执行包
将所有文件打成单独的一个jar
pom.xml代码为:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<!--配置主方法所在类的名称(需要加上包名)-->
<mainClass>test.Test</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>
jar-with-dependencies
</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
将第三方包和本地代码分开打包,并配置classpath的方式
这种打包方式打出的可执行jar包只需要连同dependency文件夹一起拷贝出来即可运行
pom.xml代码为:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<!--配置主方法所在类的名称(需要加上包名)-->
<mainClass>test.Test</mainClass>
<classpathPrefix>
dependency/
</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>