众所周知springboot内嵌了tomcat,既可以直接以运行jar包的形式启动,也可以打成war包放在tomcat下运行。平常开发中主要放在tomcat下运行,并没出现过什么启动异常问题。偶尔也会使用main方法启动,也都正常。但是在一次上线中发现原来是以jar包运行,故也打jar包运行,但是却遇到不少问题,过程曲折,记录下。
修改pom.xml为
<packaging>jar</packaging>
执行clean package ,可以执行成功
执行java -jar *-1.0.0.jar
发现启动异常,提示缺少class,检查发现缺少一个jar包,直接用winRAR打开将jar放进去,再次执行java -jar *-1.0.0.jar
发现仍然启动不了,大概是说这种直接放jar进去的方式不可取,再次查看pom.xml中发现引用到本地jar包
<dependency> <groupId>com.eps.api</groupId> <artifactId>api</artifactId> <version>0.0.1</version> <scope>system</scope> <systemPath>${project.basedir}/lib/*.jar</systemPath> </dependency> |
于是修改pom.xml配置
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <includeSystemScope>true</includeSystemScope> </configuration> </plugin> |
增加includeSystemScope 配置,再次打包成功,运行成功
于是很好奇去看看这个jar打进去是什么样的,发现并没有
反编译整个jar包,最后发现
打包之后对原始jar包进行了重命名,格式为:groupId-artifactId-version.jar
至此才恍然大悟