spring boot项目没有mainClass如何实现打包运行
程序员文章站
2022-03-09 22:11:50
目录springboot项目没有mainclass实现打包运行框架starter运行类如下业务代码模块如何配置?使用maven打包指定mainclassspringboot项目没有mainclass实...
springboot项目没有mainclass实现打包运行
项目分为两个部分,一个是业务代码模块,一个是框架模块,运行class放在框架部分,那业务代码如何配置才能正常运行?
框架starter运行类如下
@springbootapplication( scanbasepackages = {"com"} ) public class starter {
@springbootapplication只会扫描@springbootapplication注解标记类包下及其子包的类(特定注解标记,比如说@controller,@service,@component,@configuration和@bean注解等等)纳入到spring容器,如果不在@springbootapplication注解标记类相同包下及其子包的类,需要我们去配置一下扫包路径,即scanbasepackages 。
业务代码模块如何配置?
借助spring-boot-maven-plugin配置如下
<plugin> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-maven-plugin</artifactid> <configuration> <mainclass>com.core.starter</mainclass> <layout>zip</layout> <classifier>exec</classifier> <includesystemscope>true</includesystemscope> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin>
mainclass最终会在jar包里的manifest.mf文件中指定
start-class: com.core.starter
spring boot maven plugin的5个goals
-
spring-boot:repackage
,默认goal。在mvn package之后,再次打包可执行的jar/war,同时保留mvn package生成的jar/war为.origin -
spring-boot:run
,运行spring boot应用 -
spring-boot:start
,在mvn integration-test阶段,进行spring boot应用生命周期的管理 -
spring-boot:stop
,在mvn integration-test阶段,进行spring boot应用生命周期的管理 -
spring-boot:build-info
,生成actuator使用的构建信息文件build-info.properties
layout属性的值可以如下:
-
jar
,即通常的可执行jar -
main-class
: org.springframework.boot.loader.jarlauncher -
war
,即通常的可执行war,需要的servlet容器依赖位于web-inf/lib-provided -
main-class
: org.springframework.boot.loader.warlauncher -
zip
,即dir,类似于jar -
main-class
: org.springframework.boot.loader.propertieslauncher -
module
,将所有的依赖库打包(scope为provided的除外),但是不打包spring boot的任何launcher -
none
,将所有的依赖库打包,但是不打包spring boot的任何launcher
classifier
生成可执行jar包的后缀名
includesystemscope
将system范围依赖包也打进来,如
<dependency> <groupid>com.alipay</groupid> <artifactid>alipay-sdk-java</artifactid> <version>1.1</version> <scope>system</scope> <systempath> ${project.basedir}/local_repo/com/alipay/alipay-sdk-java/1.1/alipay-sdk-java-1.1.jar </systempath> </dependency>
使用maven打包指定mainclass
<build> <plugins> <plugin> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-maven-plugin</artifactid> <configuration> <mainclass>com.xxx.xxxapplication</mainclass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。