SpringBoot 多模块项目打包(jar、war)

                                 SpringBoot 多模块项目打包

开发工具为idea

多模块项目有一个或多个web子工程,负责工程的启动运行;

SpringBoot 多模块项目打包(jar、war)_第1张图片

有jar、war选项,选择哪种打包方式会打包成哪种(web工程为启动工程,所以web工程打包成哪种即项目以哪种方式运行)

 

一.使用idea运行项目 :

TODO:此文章不讲解配置Maven,默认已maven已可以成功打包为例-.-

1.使用idea运行时,默认即为jar方式运行,找到web工程中的application类main方法运行即可。

2.用idea嵌入tomcat,将项目打war包运行:

先将web子工程改成war包形式

2.1:web子工程pom中加入:

war

2.2:父工程中pom中


	org.springframework.boot
	spring-boot-devtools
	runtime


	org.springframework.boot
	spring-boot-starter-tomcat
	provided


	org.springframework.boot
	spring-boot-legacy
	1.1.0.RELEASE

 2.3:找到生成的项目编译出来的war添加到tomcat运行:

不会的点开此链接看前几步就行了

 

二.外部运行项目:

1.使用内置tomcat运行(很简单):

根据生成目录找到jar ,运行命令为:java -jar xxx.jar

根据生成目录找到war,运行命令为:java -jar xxx.war

 

2.使用外置tomcat在外部运行项目:

一般都是因为要多个项目共存于一个tomcat的需求,这种才会出现,或前后台置于一个tomcat中(很不幸,我tm就碰到了)

2.1:

一种是自己根据tomcat运行的规则建造出项目结构相同的文件夹,将项目所产生的class和lib一一对应的置换,如果还运行不了就需要手动写web.xml放入其中,web.xml模板如下





    contextConfigLocation
    com.example.demo.DemoApplication


    
        org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener
    


    

    appServlet
    
           org.springframework.web.servlet.DispatcherServlet
    
    
    contextAttribute
    
           org.springframework.web.context.WebApplicationContext.ROOT
    
    
        1
    
    
        appServlet
        /*
    

写的时候需要注意,所有用到servlet的地方例如filter、listener都需要在其中配置,按照javaweb规范书写,我最开始就是用这种方式,亲测可行,只是有点麻烦而已。

2.2:

SpringBoot 多模块项目打包(jar、war)_第2张图片

使用父项目(root)打包,执行完后找到web子工程目录中所生成的.war和.war.original

SpringBoot 多模块项目打包(jar、war)_第3张图片

最后:.war是没用的-是没用的-是没用的,把.war.original复制到tomcat里面,改名为xxx.war,亲测可用,访问时命名是xxx,就在端口后加/xxx/

 

注意:

1.使用内置tomcat时,所有tomcat配置项配置于Spring配置文件中;

2.如果需要运行于外置tomcat ,则tomcat版本需在8以上,否则报错

Unable to process Jar entry [META-INF/versions/9/module-info.class] from Jar
 

 

 

 

你可能感兴趣的:(Spring,Boot)