• springboot项目打包方式


    springboot和ssm项目打包方式

    1.打jar包

    说明:

    springboot项目默认的打包方式就是打jar包,因为它内嵌了tomcat,用不着打war包部署到tomcat的webapp目录下,安装了jdk,就可以直接运行

    1.1 maven命令行的方式打jar包

    cd 到项目的根目录
    # 执行命令
    mvn clean package
    # 可以添加参数的方式打包,比如跳过测试
    mvn install -Dmaven.test.skip=true
     
    命令含义
    mvn clean 删除 target 目录
    mvn package 把 jar 打到本项目的 target 目录下
    mvn install 把 jar 打到本项目的 target 目录下,之后再将它安装到本地的 maven 仓库中

    1.2 eclipse打jar包

    (1)打包部署到本地,并打包到项目的target目录

    右击项目—>run as–>maven install

    image-20200905212637655

    (2)只是导报到项目根目录下的target目录

    右击项目—>run as–>maven package …—>选择跳过测试的参数—>run

    image-20200905212307772

    image-20200905212513569

    1.3 idea打jar包

    image-20200905213805974

    2.打war包

    2.1 ssm项目打war包

    ssm项目或者是javaweb(servlet项目的项目)打war包

    同理打jar包的方式

    说明:

    如果ssm项目打war包和打jar包的方式同理,参考打jar包的方式

    只用springboot项目打war包要注意,需要配置相关的参数

    2.2springboot打war包

    2.2.1修改pom.xml,修改打包方式为

    <!--默认为jar方式-->
    <!--<packaging>jar</packaging>-->
    <!--改为war方式-->
    <packaging>war</packaging>
     

    2.2.2修改pom.xml,去除内置的tomcat

    • 第一种方式 : 排除spring-boot-starter-web中的Tomcat(推荐这种方式)
    <!-- 在原有的spring-boot-starter-web依赖添加内容,不是添加新的依赖 -->
    <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>
    <!-- 打war包部署到tomcat需要的依赖 -->
    	<dependency>
    			<groupId>javax.servlet</groupId>
    			<artifactId>javax.servlet-api</artifactId>
    			<scope>provided</scope>
    		</dependency>
     
    • 第二种方式 : 添加依赖
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <!--打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。
            相当于compile,但是打包阶段做了exclude操作-->
        <scope>provided</scope>
    </dependency>
    <!-- 打war包部署到tomcat需要的依赖 -->
    	<dependency>
    			<groupId>javax.servlet</groupId>
    			<artifactId>javax.servlet-api</artifactId>
    			<scope>provided</scope>
    		</dependency>
     

    2.2.3 修改启动类

    • 第一种方式 : 启动类继承SpringBootServletInitializer实现configure(推荐这种方式,不用的时候注释就可以)
    @SpringBootApplication
    public class Application extends SpringBootServletInitializer {
    
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            return builder.sources(Application.class);
        }
    }
     
    • 第二种方式 : 新增加一个类继承SpringBootServletInitializer实现configure
    public class ServletInitializer extends SpringBootServletInitializer {
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            //此处的Application.class为带有@SpringBootApplication注解的启动类
            return builder.sources(Application.class);
        }
    
    }
     

    注意事项:

    关于项目名路径的问题

    1.springboot项目打war包项目的配置

    使用外部Tomcat部署访问的时候,application.properties(或者application.yml)中配置的

    server.port=

    server.servlet.context-path=

    将失效,请使用tomcat的端口,tomcat,webapps下项目名进行访问。

    为了防止应用上下文所导致的项目访问资源加载不到的问题,

    建议pom.xml文件中标签下添加标签:

    注意:这是打包好了之后war包的名字

    <build>
        <!-- 应与application.properties(或application.yml)中context-path保持一致 -->
        <finalName>war包名称</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    2.springboot项目打war包在tomcat配置
    在其 <Host> 标签下⾯加⼊如下内容即可:
    <Context path="/" docBase="/usr/local/tomcat/webapps/项目名称" reloadable="false"></Context>
     

    说明:

    部署到linux环境,docBase属性的值是项目位置的全路径

    如果部署到的是window系统,好像写项目名就可以

    反正以后遇到类似问题,试一下,这边可以说是一个坑

    关于使用maven打包命令的问题

    使用mvn命令行打包,运行:
    
    clean是清除之前的包,-Dmaven.test.skip=true是忽略测试代码
    
    jar 方式打包,使用内置Tomcat:mvn clean install -Dmaven.test.skip=true
    
    运行:java -jar 包名.jar
    
    war 方式打包,使用外置Tomcat:mvn clean package -Dmaven.test.skip=true
    
    运行:${Tomcat_home}/bin/目录下执行startup.bat(windows)或者startup.sh(linux)

    关于打包报错的解决方案

    1.The requested profile “pom.xml” could not be activated because it does not exist

    20190509085826846_

    3.springboot打war包自己实现方式

    参考网址:

    http://doc.ruoyi.vip/ruoyi/document/hjbs.html#%E9%83%A8%E7%BD%B2%E7%B3%BB%E7%BB%9F

    1. 修改打包方式位war
    <packaging>war</packaging>

    image-20210909192528313

    1. web容器中进行部署配置类
    package com.shaoming;
    
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
    
    /**
     * @ClassName: SpringBootDemoServletInitializer
     * @Author: 邵明
     * @Date: 2021/9/9 19:17
     * @Description:
     */
    public class SpringBootDemoServletInitializer extends SpringBootServletInitializer
    {
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
        {
            /**
             SpringBootDemoApplication 是springboot项目启动类
             */
            return application.sources(SpringBootDemoApplication.class);
        }
    }
     
    1. 排除内置tomcat(不重要)

    SpringBoot去除内嵌Tomcat(PS:此步骤不重要,因为不排除也能在容器中部署war

    <!-- 多模块排除内置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>
    		
    <!-- 单应用排除内置tomcat -->		
    <exclusions>
    	<exclusion>
    		<artifactId>spring-boot-starter-tomcat</artifactId>
    		<groupId>org.springframework.boot</groupId>
    	</exclusion>
    </exclusions>
     

    4.总结

    1. 这种方式比之前的老方式方便简单,如果打jar包只需要注释pom.xml的<packaging>war</packaging>这行配置就可以了,很简单

    2. 最后设置好需要修改的就是

      2.1 打包方式

      2.2 打包过后包的名称

    来源:https://blog.csdn.net/shaoming314/article/details/109153530
  • 相关阅读:
    【索引】SyntaxHighlighter 使用参考
    【索引】博客心得
    SyntaxHighlighter 使用参考(一) 概述
    PEGA 十合一吉他控制器连接电脑玩《吉他英雄3》
    从SourceForge上获取CVS管理的开源代码
    从SourceForge上获取SVN管理的开源代码
    整数哈希介绍
    回文时间
    D2js 是如何处理并发的
    Windows 安装JRuby 生成 war 到 tomcat 运行
  • 原文地址:https://www.cnblogs.com/konglxblog/p/16749067.html
Copyright © 2020-2023  润新知