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

作者:球球之家/carver 时间:2021-10-24 11:29:20 

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>

来源:https://blog.csdn.net/wm5920/article/details/85063894

标签:springboot,项目,mainClass,打包
0
投稿

猜你喜欢

  • java中String的一些方法深入解析

    2023-11-25 21:48:56
  • Java装饰器设计模式_动力节点Java学院整理

    2023-11-11 03:03:10
  • Java内存模型(JMM)及happens-before原理

    2023-11-25 00:41:05
  • Java由浅入深讲解继承下

    2023-11-25 12:21:26
  • C语言字符串操作总结大全(超详细)

    2023-07-06 15:14:56
  • Java调用.dll文件的方法

    2023-11-23 21:16:22
  • Android kotlin使用注解实现防按钮连点功能的示例

    2023-07-02 11:58:06
  • Mybatis Plus select 实现只查询部分字段

    2022-07-23 18:51:32
  • mybatis @Alias注解在类上的使用方式(推荐)

    2023-11-20 00:30:03
  • Spring实战之使用ClassPathResource加载xml资源示例

    2023-11-28 23:00:30
  • 基于Mybatis plus 自动代码生成器的实现代码

    2023-11-24 10:40:51
  • java多线程复制文件的实例代码

    2022-03-04 04:29:54
  • SpringBoot过滤器的使用

    2023-08-28 21:28:56
  • 深入解析Java中的Classloader的运行机制

    2023-07-16 11:47:59
  • 深入理解Java设计模式之命令模式

    2023-11-24 11:06:31
  • Java jar打包工具使用方法步骤解析

    2023-07-01 12:26:47
  • Java 求解如何把二叉搜索树转换为累加树

    2021-11-19 14:09:54
  • JAVA JVM面试题总结

    2021-07-12 04:55:13
  • 简单解析java方法在调用在内存中的执行过程

    2022-04-12 15:46:26
  • Java栈和基础队列的实现详解

    2023-07-02 05:36:59
  • asp之家 软件编程 m.aspxhome.com