spring boot项目没有mainClass如何实现打包运行

 更新时间:2022年01月17日 17:13:27   作者:球球之家/carver  
这篇文章主要介绍了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为.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>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java基于Swing和netty实现仿QQ界面聊天小项目

    Java基于Swing和netty实现仿QQ界面聊天小项目

    这篇文章主要为大家详细介绍了Java如何利用Swing和netty实现仿QQ界面聊天小项目,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-09-09
  • Java使用线程实现异步运行的方法

    Java使用线程实现异步运行的方法

    在Java中,实现异步运行的一个常用方式是使用Thread类,这篇文章主要介绍了Java使用线程实现异步运行,需要的朋友可以参考下
    2024-07-07
  • java实现文件压缩成zip的工具类

    java实现文件压缩成zip的工具类

    这篇文章主要为大家详细介绍了java实现文件压缩成zip的工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Java编程用两个栈实现队列代码分享

    Java编程用两个栈实现队列代码分享

    这篇文章主要介绍了Java编程用两个栈实现队列代码分享,具有一定参考价值,这里给大家分享下,供需要的朋友了解。
    2017-10-10
  • JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)

    JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)

    这篇文章主要基于Servlet+JSP+JavaBean开发模式实现JavaWeb用户登录注册功能实例代码,非常实用,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-05-05
  • IDEA EasyCode 一键帮你生成所需代码

    IDEA EasyCode 一键帮你生成所需代码

    这篇文章主要介绍了IDEA EasyCode 一键帮你生成所需代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 关于单例模式懒汉式和饿汉式的区别及说明

    关于单例模式懒汉式和饿汉式的区别及说明

    这篇文章主要介绍了关于单例模式懒汉式和饿汉式的区别及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Java中的位运算符全解

    Java中的位运算符全解

    这篇文章主要为大家详细介绍了Java中的位运算符,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • Java GUI图形界面开发实现小型计算器流程详解

    Java GUI图形界面开发实现小型计算器流程详解

    本文章向大家介绍Java GUI图形界面开发实现小型计算器,主要包括布局管理器使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下
    2022-08-08
  • Spring Boot 深入分析AutoConfigurationImportFilter自动化条件配置源码

    Spring Boot 深入分析AutoConfigurationImportFilter自动化条件

    这篇文章主要分析了Spring Boot AutoConfigurationImportFilter自动化条件配置源码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-07-07

最新评论