SpringBoot部署线上jar或war到Tomcat服务器

简介: SpringBoot部署线上jar或war到Tomcat服务器

war包在服务器上部署

修改pom.xml文件将打包的方式改成war或jar包的形式

默认打包方式为jar  部署jar或war取决于你

<packaging>war</packaging>

排除springboot内嵌tomcat容器依赖(两种方式都可)

SpringBoot在使用时 如需要打包上传服务器  需要我们排除内置tomcat 以防冲突

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope> <!--去掉内嵌tomcat-->
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope> <!--去掉使⽤内嵌tomcat解析jsp-->
        </dependency>

在这里将 scope 属性设置为 provided,这样在最终形成的 WAR 中不会包含这个 JAR 包,因为 Tomcat 或 Jetty 等服务器在运行时将会提供相关的 API 类

pom.xml添加 spring boot提供的maven打包插件

 <build>
        <plugins>
            <!-- spring boot提供的maven打包插件-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- 指定skipTests为true,跳过单测-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.2</version>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
            <!-- 指定JDK版本-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

此依赖为启动器的主要作用是提供Web开发场景所需的底层所有依赖  

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>1.5.9.RELEASE</version>
        </dependency>

此版本 1.5.9.RELEASE  支持Tomcat 7

配置启动类

我们平常用main方法启动的方式,都有一个App的启动类,代码如下:

@ServletComponentScan
@SpringBootApplication(scanBasePackages = {"com.lt.crm", "com.lt.crm.rest.annotation",
        "com.lt.crm.mdd.runtime", "com.lt.crm.core.auditlog.advice"})
@EnableCaching
public class StoreroomApplication {
    public static void main(String[] args) {
        SpringApplication.run(StoreroomApplication.class, args);
    }

我们需要类似于web.xml的配置方式来启动spring上下文了,在Application类的同级添加一个SpringBootStartApplication类,其代码如下:


修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法


package com.lt.crm;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@MapperScan("com.lt.crm")
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class SpringBootStartApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder   
        configure(SpringApplicationBuilder builder) {
        // 注意这里要指向原先用main方法执行的 项目启动类
        return builder.sources(StoreroomApplication.class);
    }
}

使用mvn命令行打包和运行

ea02778102e24b0cb70af2aef5a012fc.png

打包完成会在 target 目录下生成:项目名+版本号.war文件,拷贝到 tomcat 服务器中启动即可


1.  通过idea工具 可以指向我们本地的tomcat 下的webapps 找到我们的项目 拷贝到服务器tomcat


2.  也可以 maven 命令   第一步:clean 第二步:install 第三步:package   然后找到我们项目 会在 target 目录下生成:项目名+版本号.war或jar文件(生成的 war或jar 取决于pom.xml设置的打包方式), 拷贝到 tomcat 服务器中启动即可   (拷贝项目+版本号.war 放到webapps,  启动tomcat,即可自动解压部署)


jar包在服务器上部署

如果你想用jar启动 可以直接修改pom.xml 默认也是为jar 的打包方式

<packaging>jar</packaging>

打包完成会在 target 目录下生成:项目名+版本号.jar文件 拷贝


b6822c36296342faa8db2ff150a3e675.png

黏贴项目名+版本号.jar文件  放到webapps

dd0bd8c6ec2d4e86a2960c62f2ff6d92.png


cmd命令 进入webapps目录下    执行命令 java  -jar 你的项目名称.jar    回车


c6b535f08d72419e930d4f5901d20cfd.png

启动成功 访问你的地址

24a6aa08839143f3a6c6247575a88f97.png

解决jar冲突 ?   又如何排除呢?

idea Terminal 控制台中输入 命令: mvn dependency:tree  查看jar版本及依赖关系

命令行:  mvn dependency:tree

661b6cb875eb44d9b86f2a7bb86ef01a.png

pom.xml 添加要排除的jar

        <!--Redis相关依赖 (需要配合 commons-pool2 对象池依赖使用)-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>2.1.3.RELEASE</version>
            <exclusions>
                <exclusion>
                    <groupId>ch.qos.logback</groupId>
                    <artifactId>logback-classic</artifactId>
                </exclusion>
            </exclusions>
        </dependency>


目录
相关文章
|
2月前
|
XML Java 应用服务中间件
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
626 17
Spring Boot 两种部署到服务器的方式
|
7月前
|
Java 应用服务中间件 Spring
为什么SpringBoot的 jar 可以直接运行?
SpringBoot的 jar 可以直接运行的原因
544 2
|
4月前
|
Java 应用服务中间件 Maven
Maven的三种项目打包方式——pom,jar,war的区别
Maven 提供了多种打包方式,分别适用于不同类型的项目。pom 用于父项目或聚合项目,便于项目的结构和依赖管理;jar 用于Java类库或可执行的Java应用程序;war 则专用于Java Web应用程序的部署。理解这些打包方式的用途和特点,可以帮助开发者更好地配置和管理Maven项目,确保构建和部署过程的顺利进行。无论是单模块项目还是多模块项目,选择合适的打包方式对于项目的成功至关重要。
516 3
|
4月前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
123 2
|
5月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
157 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
5月前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
143 2
|
7月前
|
SQL 前端开发 Java
在IDEA中使用Maven将SpringBoot项目打成jar包、同时运行打成的jar包(前后端项目分离)
这篇文章介绍了如何在IntelliJ IDEA中使用Maven将Spring Boot项目打包成可运行的jar包,并提供了运行jar包的方法。同时,还讨论了如何解决jar包冲突问题,并提供了在IDEA中同时启动Vue前端项目和Spring Boot后端项目的步骤。
在IDEA中使用Maven将SpringBoot项目打成jar包、同时运行打成的jar包(前后端项目分离)
|
7月前
|
Java Maven
构建Springboot项目、实现简单的输出功能、将项目打包成可以执行的JAR包(详细图解过程)
这篇文章详细介绍了构建SpringBoot项目的过程,包括新建工程、选择环境配置、添加依赖、项目结构说明,并演示了如何编写一个简单的Controller控制器实现输出功能,最后讲解了如何使用Maven将项目打包成可执行的JAR包,并提供了运行JAR包的命令和测试效果。
构建Springboot项目、实现简单的输出功能、将项目打包成可以执行的JAR包(详细图解过程)
|
7月前
|
前端开发 JavaScript Java
【Azure 应用服务】App Service For Windows 中如何设置代理实现前端静态文件和后端Java Spring Boot Jar包
【Azure 应用服务】App Service For Windows 中如何设置代理实现前端静态文件和后端Java Spring Boot Jar包
|
3天前
|
域名解析 人工智能 弹性计算
DeepSeek服务器繁忙解决方法:使用阿里云一键部署DeepSeek个人网站!
通过阿里云一键部署DeepSeek个人网站,解决服务器繁忙问题。学生用户可领取300元代金券实现0成本部署,普通用户则可用99元/年的服务器。教程涵盖从选择套餐、设置密码到获取百炼API-KEY的全流程,助您快速搭建专属大模型主页,体验DeepSeek、Qwen-max、Llama等多款模型,无需代码,最快5分钟完成部署。支持绑定个人域名,共享亲友使用,日均成本仅约1元。
37 10