欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringBoot项目的jar包打包及运行

程序员文章站 2024-02-07 17:25:52
...

环境

系统: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>
  1. 打包
  • 在idea中的Maven窗口下依次点击clean、package
    SpringBoot项目的jar包打包及运行
  • 用命令执行
    在idea的Terminal窗口中执行
    SpringBoot项目的jar包打包及运行
    或者Win+R打开DOC窗口执行,这两种方式都是一样的。
    SpringBoot项目的jar包打包及运行
  1. 运行jar包
    打包命令执行后会在target目录下(假设你的编译路径是在target)生成jar包。
    SpringBoot项目的jar包打包及运行
    在idea的Terminal或者是在PowerShell窗口中执行
    SpringBoot项目的jar包打包及运行
  2. 可能出现的问题
    运行过程可能会抛异常:提示没有找到主清单属性。这个一般是在jar包中的MANIFEST.MF中没有生成Main-ClassSpringBoot项目的jar包打包及运行
    这个网上有许多解决方案,再次不做赘述。

方式二:用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>
  1. 打包
    执行打包命令:
D:\Idworkspace\jmsejcjserver>mvn clean package appassembler:assemble
  1. 运行jar包
    执行打包命令后会在编译路径target下生成你在pom.xml配置的路径文件。
    该文件有三个目录:
    SpringBoot项目的jar包打包及运行
    进入bin路径下双击执行脚本即可。(window用.bat脚本,linux用.sh脚本)
  2. 可能出现的问题
  • 双击执行脚本,闪退,logs目录也没有输出。遇到这种情况时放弃双击bat/sh脚本,改用命令去执行,可定位错误。
    1. 输入行太长。命令语法不正确。
      SpringBoot项目的jar包打包及运行
解决方法

用编辑器打开bat文件,找到CLASSPATH值,将后面的所有依赖用通配符*代替。
SpringBoot项目的jar包打包及运行
2. 提示无法找到主类:xxxx
可能出现的问题是:在pom.xml文件中用parent继承了springboot的依赖。可换种继承方式。
SpringBoot项目的jar包打包及运行

<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>
  1. 无法找到第三方jar包,抛异常ClassNotFound
    暂未解决。
相关标签: Java