今天在SpringBoot打JAR包部署的時候,出現以下問題,記錄整理如下:
問題一:SpringBoot打包無法打入Lib文件夾下自己添加(不在Maven倉庫)中的JAR包。
在SpringBoot工程開發中,需要引入其他jar包,由於沒有通過在POM.XML文件中,通過Maven倉庫增加,而是在WEB-INF下新增lib文件,將需要的jar包放入改文件夾下,然後通過build將jar包引入工程。但是在Maven打包的時候,發現通過上述方式新增的jar包無法打入SpringBoot工程JAR包。
解決方法:
<!-- 解決SpringBoot工程打包無法將工程中lib文件夾中的jar包(沒有添加進Maven倉庫) -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.3</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/fastjson-1.2.3.jar</systemPath>
</dependency>
<dependency>
<groupId>com.inspur</groupId>
<artifactId>common-utils</artifactId>
<version>0.0.1</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/common-utils-0.0.1-SNAPSHOT.jar</systemPath>
</dependency>
問題二:無法將JSP界面打入JAR包。
目錄結構如下
將SpringBoot工程打成JAR包,發現jsp文件沒有打入,導致訪問404。解決方法
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- <classifier>execute</classifier>
<skip>true</skip> -->
<!-- 解決SpringBoot工程Jar包啓動,找不到啓動類,導致系統無法訪問的問題 -->
<includeSystemScope>true</includeSystemScope>
<mainClass>com.inspur.cxy.SpringbootdemoApplication</mainClass>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf-8</encoding>
<!-- <compilerArgs>
<arg>-verbose</arg>
<arg>-Xlint:unchecked</arg>
<arg>-Xlint:deprecation</arg>
<arg>-bootclasspath</arg>
<arg>${env.JAVA_HOME}/jre/lib/rt.jar</arg>
<arg>-extdirs</arg>
<arg>${project.basedir}/src/main/webapp/WEB-INF/lib</arg>
</compilerArgs> -->
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
<resource>
<!-- 解決SpringBoot打包無法將JSP界面打入的問題 -->
<directory>src/main/webapp/</directory>
<!--注意此次必須要放在此目錄下才能被訪問到 -->
<targetPath>META-INF/resources</targetPath>
<includes>
<include>**/**</include>
</includes>
</resource>
</resources>
</build>
問題三:因爲找不到啓動類導致系統無法訪問的問題
將SpringBoot工程打成JAR包,通過java -jar命令運行,後臺正常啓動,但是訪問提示找不到系統界面,通過解壓jar包發現引入的jar包和jsp頁面都存在,後來發現是由於沒有指定主方法入口導致的。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- <classifier>execute</classifier>
<skip>true</skip> -->
<!-- 解決SpringBoot工程Jar包啓動,找不到啓動類,導致系統無法訪問的問題 -->
<includeSystemScope>true</includeSystemScope>
<mainClass>com.inspur.cxy.SpringbootdemoApplication</mainClass>
</configuration>
</plugin>