**
Spring Boot项目打包部署
**
**
一、Jar包
**
1、打包时添加下面依赖代码
要添加启动类的信息,否则将会出现无主清单属性的错误。
<!-- 编译版本可以省略 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
<!-- 指定App类 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.ykd.App</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
2、添加启动类
@EnableAutoConfiguration
@ComponentScan(basePackages = "com.ykd.web")
public class App
{
public static void main(String[] args) {
//启动springboot项目
SpringApplication.run(App.class,args);
}
}
3、打包
打包有两种方式:
方式一:使用maven插件:
方式二:使用maven命令:该方式需要配置环境变量,然后可以在项目目录或者IDEA的终端窗口继续命令打包。
4、目录结构
org文件夹:存放一下启动加载项目的类
BOOT-INF文件夹:存放项目自定义的类以及所依赖的jar包
META-INF文件夹:
1、\maven\com.ykd\springboot-test2\pom.properties:记录了一下项目的版本信息等
2、springboot-test2-1.0-SNAPSHOT.jar\META-INF\MANIFEST.MF:记录了项目一些文件的信息
4、注意事项:
如果最后打包的项目发现缺少resources下的一些配置文件,或者缺少web.xml等文件时,我们可以手动的进行配置一下,提示maven将配置文件进行打包
在标签里进行配置
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
5、打包后的Jar包可以用:命令行输入java -jar test.jar 运行即可
注意:用终端打开时,关闭服务的时候,要用ctrl+c 关闭服务,直接关闭窗口,服务会继续占用此端口。
**
二、war包
**
1、添加依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ykd</groupId>
<artifactId>robot</artifactId>
<version>1.0</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<!-- SpringBoot 父依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencies>
<!-- SpringBoot 配置web的依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 限制Spring内置的tomcat作用范围 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!-- t提供servlet依赖 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>robot</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<!-- 防止启动类无法扫描mapper.xml配置文件 -->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>mave
n-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
2、添加启动类
@EnableAutoConfiguration
@ComponentScan(basePackages = {"com.ykd.web","com.ykd.aspect"})
@MapperScan(value="com.ykd.web.mapper")
public class RobotApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(RobotApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(RobotApplication.class,args);
}
}
3、打包
注意:War工程不用在Application.yml或者Application.properties中配置 项目名
4、部署tomcat
这里好像Spring Boot生成的war包,没法用 java -jar 命令进行发布,没有主清单信息,因此选择在tomcat上部署,将war包放在tomcat的webapps目录下,然后再启动tomcat进行访问。