使用Maven插件让生成的jar包可以直接运行

问题:

使用maven直接生成的jar包无法通过java -jar XXX.jar方式直接运行,报错如下:

使用Maven插件让生成的jar包可以直接运行

解决:

  • maven官方文档地址:

http://maven.apache.org/plugins/maven-shade-plugin/examples/executable-jar.html

  • 使用maven的maven-shade-plugin插件,在pom.xml文件中添加如下配置:
<!-- 使用maven插件使生成的jar包可以直接运行start -->
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-shade-plugin</artifactId>
				<version>3.2.0</version>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>shade</goal>
						</goals>
						<configuration>
							<transformers>
								<transformer
									implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
									<mainClass>com.dima.test.main.TestMain</mainClass><!-- 这里设置jar包的入口main方法所在类的全限定名 -->
								</transformer>
							</transformers>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
	<!-- 使用maven插件使生成的jar包可以直接运行end -->
  • 示例main方法代码截图:

使用Maven插件让生成的jar包可以直接运行

  • 注意插件配置里需要设置jar包的入口main方法所在类的全限定名,如下图:

使用Maven插件让生成的jar包可以直接运行

  • 使用maven打包:

使用Maven插件让生成的jar包可以直接运行

  • 运行结果:

使用Maven插件让生成的jar包可以直接运行