• springboot运维篇--springboot项目打包


    1.springboot项目jar方式部署

    直接使用idea
    在这里插入图片描述
    直接使用命令
    跳过测试用例快速打包

    mvn clean -D skipTests package
    
    • 1

    将这个应用打成jar包,直接使用java-jar的命令执行

    • 需要注意的是,需要 jar 命令行启动需要依赖 Maven 插件的支持,必须确认在打包的时候 SpringBoot 项目有对应的 Maven 插件:
    
     <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.bootgroupId>
                    <artifactId>spring-boot-maven-pluginartifactId>
                    <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombokgroupId>
                            <artifactId>lombokartifactId>
                        exclude>
                    excludes>
                configuration>
                plugin>
            plugins>
        build>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    2.jar运行方式临时属性的设置

    程序包打好了,可以发布了。但是程序包打好以后,里面的配置都已经是固定的了,比如
    配置了服务器的端口是8080。如果8080端口目前正在被占用,我们如何启动springbootl项目
    呢?
    SpringBoot提供了灵活的配置方式,如果你发现你的项目中有个别属性需要重新配置,
    可以使用临时属性的方式快速修改某些配置。方法也特别简单,在启动的时候添加上对应参
    数就可以了。

    java -jar xxx.jar --server.port=8081 --server.servlet.contextPath=/ssm
    
    • 1

    总结

    1. 使用jar命令启动SpringBoot工程时可以使用临时属性替换配置文件中的属性
    2. 临时属性添加方式:java -jar 工程名.jar --属性名=值
    3. 多个临时属性之间使用空格分隔
    4. 临时属性必须是当前boot工程支持的属性,否则设置无效

    3.springboot项目打包成war包

    传统的部署方式:将项目打成war包放入tomcat的webapps目录下面,启动tomcat,
    即可访问。
    
    • 1
    • 2

    SpringBoot项目改造打包成war的流程

    1. pom.xml配置修改
        <packaging>jar</packaging>
        修改为
        <packaging>war</packaging>
    
    • 1
    • 2
    • 3
    1. pom文件添加如下依赖
       		 <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <scope>provided</scope>
            </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. 排除springboot内置的tomcat干扰
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <exclusions>
                    <exclusion>
                       
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-tomcat</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    1. 如果是war包发布,需要增加SpringBootServletInitializer-子类,并重写其configure方法,或者将main函数所在的类继承SpringBootServletInitializer,并重写configure方法
      当时打包为war时上传到tomcat服务器中访问项目始终报404错就是忽咯了这个步骤!!!
      改造之前
    @SpringBootApplication
    public class MyAthApplication  implements WebMvcConfigurer {
    
        public static void main(String[] args) {
            SpringApplication.run(MyAthApplication.class, args);
        }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    改造之后

    @SpringBootApplication
    
    public class MyAthApplication  extends SpringBootServletInitializer {
    
        public static void main(String[] args) {
            SpringApplication.run(MyAthApplication.class, args);
        }
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            //注意这里指向原先main方法执行的application启动类
          return builder.sources(MyAthApplication.class);
        }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    这种改造方式也是官方比较推荐的方法
    5. pom文件中不要忘了maven编译插件

        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.bootgroupId>
                    <artifactId>spring-boot-maven-pluginartifactId>
                plugin>
            plugins>
        build>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    1. 在IDEA中使用mvn clean命令清除旧的包,并使用mvn package生成新的war包
      注意事项
    将项目打成war包,部署到外部的tomcat中,这个时候,不能直接访问spring boot项目
    中配置文件配置的端口。application.yml中配置的server.port配置的是spring boot内置的
    tomcat的端口号,打成war包部署在独立的tomcat上之后,配置的server.port是不起作用
    的。一定要注意这一点!!
    
    • 1
    • 2
    • 3
    • 4

    4.jar包和war包方式对比

    1. SpringBoot项目打包时能打成jar与war包,对比两种打包方式:
      jar更加简单方便,使用java-jar xxx.jar就可以启动。所以打成jar包的最多。
      而war包可以部署到tomcat的webapps中,随Tomcat的启动而启动。具体使用哪种方式,
      应视应用场景而定。
    2. 打jar包时不会把src/main/webapp下的内容打到jar包里(你认为的打到jar包里面,路径是不行的会报404)
      打war包,时会把src/main/webapp下的内容打到war包里
    3. 打成什么文件包进行部署与项目业务有关,就像提供rest服务的项目需要打包成jar文
      件,用命令运行很方便。。。而有大量css、js、html,且需要经常改动的项目,打成war包
      去运行比较方便,因为改动静态资源可以直接覆盖,很快看到改动后的效果,这是jar包不能比的。

    项目打成jar包运行,一段时间后,前端要对其中某几个页面样式进行改动,使其更美观,那么改动几个css、html后,需要重新打成一个新的jar包,上传服务器并运行,这种改动频繁时很不友好,文件大时上传服务器很耗时,那么w包就能免去这种烦恼,只要覆盖几个css与html即可)

  • 相关阅读:
    类与对象(中)
    L1-035 情人节 c++解法
    java入门-----基本语法之语句的使用
    一文看懂推荐系统:召回09:地理位置召回、作者召回、缓存召回
    mybatis-plus中更新null值的问题
    企业公众号文章写作方向要从这几个方面着手
    【Java基础夯实】枚举类回炉重造
    ptp 时钟同步
    旅游票务商城小程序的作用是什么
    突发奇想把云服务器刷成了黑群晖 ...
  • 原文地址:https://blog.csdn.net/wyr1235/article/details/134377978