SpringBoot项目的jar包打包及运行

本文详细介绍使用spring-boot-maven-plugin和appassembler-maven-plugin进行SpringBoot项目打包的方法,包括配置、打包步骤及常见问题解决,适用于Windows环境下运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境

系统:window 10
软件:IntelliJ IDEA 2019.3.1 (Ultimate Edition)
JAVA : 1.8.0

方式一、用spring-boot-maven-plugin打包

1. 配置打包插件

本例中有两种配置方式,我采用的是第一种。

  • 配置一:
<plugin>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-maven-plugin</artifactId>
	<configuration>
		<includeSystemScope>true</includeSystemScope>
	</configuration>
</plugin>
  • 配置二:
<plugin>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-maven-plugin</artifactId>
	<configuration>
		<mainClass>com.jiancangji.Application</mainClass>
	</configuration>
	<executions>
		<execution>
			<goals>
				<goal>repackage</goal>
			</goals>
		</execution>
	</executions>
</plugin>

2. 打包

  • 在idea中的Maven窗口下依次点击clean、package
    在这里插入图片描述
  • 用命令执行
    在idea的Terminal窗口中执行
    执行打包命令1
    或者Win+R打开DOC窗口执行,这两种方式都是一样的。
    执行打包命令2

3. 运行jar包

打包命令执行后会在target目录下(假设你的编译路径是在target)生成jar包。
可执行jar包
在idea的Terminal或者是在PowerShell窗口中执行
运行jar包
4. 可能出现的问题
运行过程可能会抛异常:提示没有找到主清单属性。这个一般是在jar包中的MANIFEST.MF中没有生成Main-Class在这里插入图片描述
这个网上有许多解决方案,本例不做赘述。

方式二:用appassembler-maven-plugin打包

本方法可以在编译路径下根据不用环境生成不同的执行文件.bat/.sh 方便运行jar包。

1. 配置:

<plugin>
	<groupId>org.codehaus.mojo</groupId>
	<artifactId>appassembler-maven-plugin</artifactId>
	<version>1.2.1</version>
	<executions>
		<execution>
		<id>make-assembly</id>
		<phase>package</phase>
		<goals>
			<goal>assemble</goal>
		</goals>
		</execution>
	</executions>
	<configuration>
		<!-- lib目录中jar的存放规则,默认是${groupId}/${artifactId}的目录格式,flat表示直接把jar放到lib目录 -->
		<!--没有路径文件夹(如com/apache),如果没有这个选项则放在lib下的jar包会被com/apache类似的多层文件夹包裹起来-->
		<repositoryLayout>flat</repositoryLayout>
		<!--生成的项目的目录位置,这里的client是项目的名称,你可以根据你的需要自己随便命名-->
		<assembleDirectory>${project.build.directory}/jcjserver</assembleDirectory>
		<!-- 打包的jar,以及maven依赖的jar放到这个目录里面 -->
		<repositoryName>lib</repositoryName>
		<!-- 配置文件的目标目录 -->
		<configurationDirectory>conf</configurationDirectory>
		<!-- 从哪里拷贝配置文件 -->
		<configurationSourceDirectory>src/main/resources</configurationSourceDirectory>
		<!-- 拷贝配置文件到上面的目录中 -->
		<copyConfigurationDirectory>true</copyConfigurationDirectory>
		<includeConfigurationDirectoryInClasspath>true</includeConfigurationDirectoryInClasspath>
		<!--java启动参数-->
		<extraJvmArguments>-Xms128m</extraJvmArguments>
		<binFileExtensions>
			<unix>.sh</unix>
		</binFileExtensions>
		<!-- 生成linux, windows两种平台的执行脚本 -->
		<platforms>
			<platform>windows</platform>
			<platform>unix</platform>
		</platforms>
		<programs>
			<program>
				<!--指定主类,脚本名。会生成shell/bat两种类型,也可用platforms指定运行平台-->
				<mainClass>com.jiancangji.Application</mainClass>
				<!-- 生成的脚本文件的名称,比如start.sh,你也可以根据你的需要命名成其他名字 -->
				<name>jcjServer</name>
			</program>
		</programs>
	</configuration>
</plugin>

2. 打包

执行打包命令:

D:\Idworkspace\jmsejcjserver>mvn clean package appassembler:assemble

3. 运行jar包

执行打包命令后会在编译路径target下生成你在pom.xml配置的路径文件。
该文件有三个目录:
编译项目路径解析
进入bin路径下双击执行脚本即可。(window用.bat脚本,linux用.sh脚本)

4. 可能出现的问题

  • 双击执行脚本,闪退,logs目录也没有输出。遇到这种情况时放弃双击bat/sh脚本,改用命令去执行,可定位错误。
    1. 输入行太长。命令语法不正确。
    错误一
解决方法

用编辑器打开bat文件,找到CLASSPATH值,将后面的所有依赖用通配符*代替。
在这里插入图片描述

2. 提示“找不到或无法加载主类:xxxx”

无法加载主类

解决方法

可能出现的问题是:在pom.xml文件中用parent继承了springboot的依赖。可换种继承方式。
在这里插入图片描述

<dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-dependencies</artifactId>
			<version>1.5.9.RELEASE</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>
3. 无法找到第三方jar包,抛异常ClassNotFound

第三方包我注释掉亦或者直接在pom指定路径,也仍旧抛出这个异常,还未找到解决方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值