目录
  • SpringBoot项目打包
    • jar 包 和 tomcat 包
  • 实际问题及解决方式
    • 问题
    • 解决方法
  • end

    现实的情况下遇见过该问题刚好记录一下!

    SpringBoot项目打包

    首先默认创建的maven springBoot项目进行代码的clean 和 install进行项目打包的时候默认是使用jar 包的形式进行打包的,如果需要进行war 包打包部署的话就需要修改相应的 数据内容了

    jar 包 和 tomcat 包

    • jar 包打完之后进行部署的时候使用 java -jar 的启动方式进行启动 可以设置相应的虚拟机参数 部署完成之后 看不得内部的相关文件信息对于文件的安全性比较高。

    启动脚本示例:

    nohup /opt/jdk8/bin/java -server -Xms4G -Xmx4G -XX:MaxMetaspaceSize=256m -Xmn1G -XX:SurvivorRatio=6 -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled  -jar /opt/api/xx.jar --spring.profiles.active=prod > /opt/logs/xx.out 2>&1 &
    • war 包的话是依赖于类似与tomcat之类的容器进行解析部署的 一般而言都是 以下方式启动

    war启动的时候将war包丢到相应tomcat webapps 路径下面就行

    SpringBoot项目打包war包时无法运行问题的解决方式

    cd /tomcat/bin 
    chmod -x *.sh
    sh catalina.sh run

    对于war包来说 可能对于一些变化大的包便于维护 比如前后端 不分离的项目如果临时需要改部分页面以及配置信息可以临时修改而不用全部项目打包升级。

    实际问题及解决方式

    问题

    在实际开发过程中使用的就是springboot项目开发然后并且选择的的打包方式上也是使用了war的模式但是在实际打算提交测试的时候发现war打出来之后在tomcat中运行是存在问题的 就是容器启动了但是相应的服务却没办法使用

    解决方法

    • 确认打包方式
    <packaging>war</packaging>
    • 不使用内部的tomcat版本等信息进行打包忽略自身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进行依赖
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>
    • 启动类(ps: 这里得注意的是 .sources .run 都是自己的启动类名称)
    @SpringBootApplication
    @MapperScan("com.smile.ssm.dao")
    @EnableScheduling
    @EnableAsync
    public class HisApplication extends SpringBootServletInitializer {
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            return builder.sources(HisApplication.class);
        }
    
        public static void main(String[] args) {
            SpringApplication.run(HisApplication.class, args);
            System.out.println("******************SSM project start success !!!***********************");
        }
    }
    • mvn重新打包测试

    • 如果以上还不行的话依赖pom 中在加一个指定的 tomcat 版本信息

    <!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-servlet-api -->
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-servlet-api</artifactId>
        <version>8.5.70</version>
    </dependency>

    end

    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。