SpringBoot项目FatJar同War之间的相互转换

[TOC]

1.原有的项目结构

启动类

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class FactoryAccountServiceApplication{

    public static void main(String[] args) {
        SpringApplication.run(FactoryAccountServiceApplication.class, args);
    }


}

maven配置

单Springboot服务
    
        org.springframework.boot
        spring-boot-starter-parent
        2.2.1.RELEASE
         
    
    
    
    jar
    
    
        
            
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    
使用maven多模块管理的Springboot

1.父pom文件

    pom
    
        discovery-nacos
        consumer-nacos
        nacos-config
    
    
     
        1.8
        UTF-8
        1.8
        1.8
        2.1.0.RELEASE
        Greenwich.SR1
    
    
    
    
        
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                pom
                import
            
            
                org.springframework.cloud
                spring-cloud-dependencies
                ${spring-cloud.version}
                pom
                import
            
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                2.1.0.RELEASE
                pom
                import
            
        
    
    
    
        
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                    1.8
                    1.8
                
            
        
    

2.Springboot服务xml配置

使用spring-boot-maven-plugin必须使用 Maven 3.2 (or later)

    jar
    
    
        learn
        com.chengbaiyi.learn
        1.0
    
    
    
        ...
    
    
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                    com.chengbaiyi.LearnServiceApplication
                
                
                    
                        
                            
                            repackage
                        
                    
                
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                    1.8
                    1.8
                
            
        
    

2.修改后的项目结构

启动类

启动类需要继承SpringBootServletInitializer类,并重载configure(SpringApplicationBuilder)方法,来声明程序入口。帮助容器找到对应入口。

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class FactoryAccountServiceApplication extends SpringBootServletInitializer {
    public static void main(String[] args) {
        SpringApplication.run(FactoryAccountServiceApplication.class, args);
    }
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(FactoryAccountServiceApplication.class);
    }
}

pom文件修改

将jar包修改为war包,排除或者修改tomcat作用域为provided,添加maven-war-plugin打包配置(该部分可以省略)

    war
    
    
        ...
        
            org.springframework.boot
            spring-boot-starter-tomcat
            
            provided
        
    
    
    
        
            
                org.apache.maven.plugins
                maven-war-plugin
                3.2.0
            
        
    

3.常见的dependency的scope

complie

默认scope,表示 dependency 都可以在生命周期中使用。而且,这些dependencies会传递到依赖的项目中。适用于所有阶段,会随着项目一起发布。

provided

跟compile相似,但是表明了dependency 由JDK或者容器提供,例如Servlet AP和一些Java EE APIs。这个scope 只能作用在编译和测试时,同时没有传递性。

runtime

表示dependency不作用在编译时,但会作用在运行和测试时,如JDBC驱动,适用运行和测试阶段。

test

表示dependency作用在测试时,不作用在运行时。 只在测试时使用,用于编译和运行测试代码。不会随项目发布。

system

跟provided 相似,但是在系统中要以外部JAR包的形式提供,maven不会在repository查找它


参考信息springboot maven打包:https://docs.spring.io/spring-boot/docs/2.1.11.BUILD-SNAPSHOT/reference/html/build-tool-plugins-maven-plugin.html

你可能感兴趣的:(SpringBoot项目FatJar同War之间的相互转换)