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命令行打包和运行
打包完成会在 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文件 拷贝
黏贴项目名+版本号.jar文件 放到webapps
cmd命令 进入webapps目录下 执行命令 java -jar 你的项目名称.jar 回车
启动成功 访问你的地址
解决jar冲突 ? 又如何排除呢?
idea Terminal 控制台中输入 命令: mvn dependency:tree 查看jar版本及依赖关系
命令行: mvn dependency:tree
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>