本文内容来自SpringBoot相关书籍学习总结
1、SpringBoot打包、发布与布署
SpringBoot使用了内嵌容器,因而它的布署方法也显得十分简单灵活,可以将SpringBoot项目打包成JAR包来独立运行,也可以打包成WAR包布署到Tomcat容器中运行。
1.1项目打包
Maven项目打包
1.生成JAR包
在pom文件食指定打包形式
<packaging>jar</packaging>
命令行形式执行打包,在项目根目录下linux伊甸园论坛,执行如下命令:
mvn clean package -Dmaven.test.skip=true
命令执行完成后,JAR包会生成到target目录下,命名通常是“项目名+版本号.jar”的方式。
2.生成WAR包
JAR包和WAR包的区别:
JAR包:通过外置Tomcat运行,不须要额外安装Tomcat。假如需更改外置Tomcat的配置,只须要在SpringBoot的配置文件中配置即可。外置Tomcat没有自己的日志输出,全靠JAR包应用输出日志,并且布署简单便捷,适宜快速布署。
WAR包:传统的应用交付形式,须要安装Tomcat,之后将WAR包放在webapps目录下运行,这样可以灵活选择Tomcat版本,也可以直接更改Tomcat的配置linux中qt4项目打包发布,同时有自己的Tomcat日志输出,可以灵活配置安全策略。WAR包相对JAR包来说没这么快速便捷。
生成war包的步骤:
(1)在pom文件手指定打包形式
<packaging>war</packaging>
(2)排除依赖中的Tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
将Tomcat组件的scope属性设置为providedlinux中qt4项目打包发布,这样在打包形成的WAR中就不会包含Tomcat相关的JAR。
(3)注册启动类
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
(4)生成WAR包
生成WAR包的命令与JAR包的命令一样。
3.实现静态文件、配置文件、JAR包分离
SpringBoot打包时,默认会把resources目录下的静态资源文件和配置文件统一打包到JAR文件中。这样布署到生产环境后,一旦须要更改配置文件都会特别麻烦。所以,在实际项目中linux常用命令,会将静态文件、配置文件和JAR包分离。
SpringBoot通过重新定义Maven插件才能轻松实现静态文件、配置文件与JAR包的分离,只须要更改项目中的pom.xml文件,在pom.xml配置文件中的节点添加自定义maven打包插件即可,具体配置如下:
<build>
<plugins>
<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>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<excludes>
<exclude>*.yml</exclude>
<exclude>*.properties</exclude>
<exclude>mapper/**</exclude>
<exclude>static/**</exclude>
<include>templates/**</include>
</excludes>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<useUniqueVersions>false</useUniqueVersions>
<mainClass>com.example.Application</mainClass>
</manifest>
<manifestEntries>
<Class-Path>./html/</Class-Path>
</manifestEntries>
</archive>
<outputDirectory>${project.build.directory}</outputDirectory>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>mapper/**</include>
<include>static/**</include>
<include>templates/**</include>
<include>*.yml</include>
<include>*.properties</include>
</includes>
</resource>
</resources>
<outputDirectory>${project.build.directory}/html</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
1.2运行布署
直接启动
java -jar xxx.jar
后台启动
nohup java -jar xxx.jar &
使用该方法日志会被重定向到nohup.out文件中。可以用“>filename2>&1”来修改默认的重定向文件名:
nohup java -jar xxx.jar >out.log 2>&1 &
SpringBoot项目支持在启动时添加订制,例如设置应用的堆显存、垃圾回收机制、日志路径等。
(1)设置jvm参数优化性能
java -Xms10m -Xmx80m -jar xxx.jar
(2)选择运行环境
假如配置了多运行环境,在启动项目时,选择对应的启动环境
java -jar xxx.jar --spring.profiles.active=dev
2、使用Docker布署SpringBoot项目
Docker才能让开发者打包它们的应用以及依赖包到一个可移植的容器中,之后发布到任何流行的Linux机器上,也可以实现虚拟化,便捷快捷。
2.1SpringBoot项目添加Docker支持
(1)创建SpringBoot项目
(2)添加Docker支持
在pom.xml中添加Docker镜像名称:
<properties>
<docker.image.prefix>example-springboot</docker.image.prefix>
</properties>
(3)添加Docker建立插件
在pom文件中添加建立Docker镜像的插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
参数说明:
${docker.image.prefix}:自定义的镜像名称。
:配置Dockerfile的路径。
${project.artifactId}:项目的artifactId。
${project.build.directory}:构建目录,默认为target。
${project.build.finalName}:产出物名称
2.2发布Docker镜像
(1)创建Dockerfile文件
在目录src/main/docker下创建Dockerfile文件
(2)生成Docker镜像
步入项目根目录,使用如下命令生成Docker镜像:
mvn package docker:build
(3)运行Docker镜像
使用dockerrun命令运行镜像,创建并启动应用。