SpringBoot项目的jar包打包及运行

tech2024-03-17  66

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> <!-- 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指定路径,也仍旧抛出这个异常,还未找到解决方法。

最新回复(0)