SpringBoot项目的jar包打包运行
环境方式一、用spring-boot-maven-plugin打包1. 配置打包插件2. 打包3. 运行jar包
方式二:用appassembler-maven-plugin打包1. 配置:2. 打包3. 运行jar包4. 可能出现的问题1. 输入行太长。命令语法不正确。解决方法
2. 提示“找不到或无法加载主类:xxxx”解决方法
3. 无法找到第三方jar包,抛异常ClassNotFound
环境
系统: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窗口中执行 或者Win+R打开DOC窗口执行,这两种方式都是一样的。
3. 运行jar包
打包命令执行后会在target目录下(假设你的编译路径是在target)生成jar包。 在idea的Terminal或者是在PowerShell窗口中执行 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>
<repositoryLayout>flat
</repositoryLayout>
<assembleDirectory>${project.build.directory}/jcjserver
</assembleDirectory>
<repositoryName>lib
</repositoryName>
<configurationDirectory>conf
</configurationDirectory>
<configurationSourceDirectory>src/main/resources
</configurationSourceDirectory>
<copyConfigurationDirectory>true
</copyConfigurationDirectory>
<includeConfigurationDirectoryInClasspath>true
</includeConfigurationDirectoryInClasspath>
<extraJvmArguments>-Xms128m
</extraJvmArguments>
<binFileExtensions>
<unix>.sh
</unix>
</binFileExtensions>
<platforms>
<platform>windows
</platform>
<platform>unix
</platform>
</platforms>
<programs>
<program>
<mainClass>com.jiancangji.Application
</mainClass>
<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指定路径,也仍旧抛出这个异常,还未找到解决方法。