spring boot项目没有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为.originspring-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,即通常的可执行jarMain-Class: org.springframework.boot.loader.JarLauncherWAR,即通常的可执行war,需要的servlet容器依赖位于WEB-INF/lib-providedMain-Class: org.springframework.boot.loader.warLauncherZIP,即DIR,类似于JARMain-Class: org.springframework.boot.loader.PropertiesLauncherMODULE,将所有的依赖库打包(scope为provided的除外),但是不打包Spring Boot的任何LauncherNONE,将所有的依赖库打包,但是不打包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>
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Springboot 整合 Java DL4J 实现文物保护系统的详细过程
在数字化时代,文物保护尤为关键,本文介绍如何利用SpringBoot和Deeplearning4j构建一个图像识别的文物保护系统,系统采用卷积神经网络(CNN),能够识别文物的损坏情况,本文介绍Springboot 整合 Java DL4J 实现文物保护系统,感兴趣的朋友一起看看吧2024-10-10
Springcloud hystrix服务熔断和dashboard如何实现
这篇文章主要介绍了Springcloud hystrix服务熔断和dashboard如何实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-12-12
spring 整合 mybatis 中数据源的几种配置方式(总结篇)
因为spring 整合mybatis的过程中, 有好几种整合方式,尤其是数据源那块,经常看到不一样的配置方式,总感觉有点乱,所以今天有空总结下,感兴趣的朋友跟随脚本之家小编一起学习吧2018-05-05
Java如何使用ConfigurationProperties获取yml中的配置
这篇文章主要介绍了Java如何使用ConfigurationProperties获取yml中的配置,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-02-02
SpringBoot整合SpringSecurity实现JWT认证的项目实践
本文会通过创建SpringBoot项目整合SpringSecurity,实现完整的JWT认证机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-07-07
使用AbstractRoutingDataSource实现数据源动态切换的实例
AbstractRoutingDataSource 是 Spring 框架提供的一个抽象类,用于实现动态数据源路由,这个类主要用于多数据源场景,其中可以根据不同的条件动态地切换到不同的数据源,本文给大家介绍了如何使用AbstractRoutingDataSource实现数据源动态切换,需要的朋友可以参考下2024-03-03


最新评论