springboot打包成jar和war浅析

问题1:一个springboot项目,用mvn install打包成jar,换一台有jdk的机器就直接可以用java -jar 项目名.jar的方式运行,没任何问题,为什么这里不需要tomcat也可以运行了?

问题2:一个springboot项目,用mvn install打包成war,放进tomcat运行,发现端口号为什么变成tomcat默认的8080?(在server.port中设置端口8090),项目名称为什么也必须加上?

答案:通过jar运行实际上是启动了内置的tomcat,所以用的是应用的配置文件中的端口,直接部署到tomcat之后,内置的tomcat就不会启用,所以相关配置就以安装的tomcat为准,与应用的配置文件就没有关系了

1、jar包与war包

jar包与war包的区别:

  1. war是一个web模块,其中需要包括WEB-INF,是可以直接运行的WEB模块;jar一般只是包括一些class文件,在声明了Main_class之后是可以用java命令运行的。
  2. war包是做好一个web应用后,通常是网站,打成包部署到容器中;jar包通常是开发时要引用通用类,打成包便于存放管理。
  3. war是Sun提出的一种Web应用程序格式,也是许多文件的一个压缩包,这个包中的文件按一定目录结构来组织;classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)可以打包成jar放到WEB-INF下的lib目录下。jar文件格式以流行的ZIP文件格式为基础,与ZIP文件不同的是,jar文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。

WAR文件就是一个Web应用程序,建立WAR文件,就是把整个Web应用程序(不包括Web应用程序层次结构的根目录)压缩起来,指定一个war扩展名。

2、springboot打包成jar

SpringBoot打包成jar包的方式:(以下示例是在idea中演示)

  1. 先创建一个springboot maven项目
    springboot打包成jar和war浅析_第1张图片

  2. pom.xml文件内容类似如下

    
    
        4.0.0
        
            org.springframework.boot
            spring-boot-starter-parent
            2.7.0
             
        
        com.example
        demo1
        0.0.1-SNAPSHOT
        demo1
        Demo project for Spring Boot
        
            1.8
        
        
            
                org.springframework.boot
                spring-boot-starter-web
            
    
            
                org.springframework.boot
                spring-boot-starter-test
                test
            
        
    
        
            
                
                    org.springframework.boot
                    spring-boot-maven-plugin
                
            
        
    
    
    
    
  3. 打成jar包
    springboot打包成jar和war浅析_第2张图片
    在target目录下就能看到打成的jar包了。
    springboot打包成jar和war浅析_第3张图片

3、springboot打包成war

SpringBoot打包成war包的方式:(以下示例是在idea中演示)

  1. 先创建一个springboot maven项目
    springboot打包成jar和war浅析_第4张图片

  2. pom.xml文件内容类似如下

    
    
        4.0.0
        
            org.springframework.boot
            spring-boot-starter-parent
            2.7.0
             
        
        com.example
        demo2
        0.0.1-SNAPSHOT
        war
        demo2
        Demo project for Spring Boot
        
            1.8
        
        
            
                org.springframework.boot
                spring-boot-starter-web
            
    
            
                org.springframework.boot
                spring-boot-starter-tomcat
                provided
            
            
                org.springframework.boot
                spring-boot-starter-test
                test
            
        
    
        
            
                
                    org.springframework.boot
                    spring-boot-maven-plugin
                
            
        
    
    
    
    

    当选择war为打包方式创建项目时,ServletInitializer是默认直接创建的

    springboot打包成jar和war浅析_第5张图片

  3. 打成war包
    springboot打包成jar和war浅析_第6张图片
    在target目录下就能看到打成的jar包了。
    springboot打包成jar和war浅析_第7张图片

你可能感兴趣的:(Java,java,jar,war)