springboot使用之快捷打包部署

编程

Maven的assembly插件实现自定义打包部署(包含依赖jar包) 

目前springboot项目的几种常见的部署方式。

1. 使用docker容器去部署,将springboot的应用构建成一个docker image,然后通过容器去启动镜像 ,这种方式在需要部署大规模的应用和应用扩展时是非常方便的,属于目前工业级的部署方案,但是需要掌握docker的生态圈技术。

    

2. 使用fatjar直接部署启动,这是很多初学者或者极小规模情况下的一个简单应用部署方式。 

    maven-shade-plugin,用来打可执行JAR包,也就是所谓的fat JAR包;

3. 使用maven-assembly-plugin插件打包,也是目前运维部署最多的一种方式,因为大数据项目中往往有很多shell脚本、SQL脚本、.properties及.xml配置项等,采用assembly插件可以让输出的结构清晰而标准化。

 

那么直接进入主题吧

配置

pom.xml

 

<build>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-jar-plugin</artifactId>

<configuration>

<archive>

<!-- 添加index则不从mainfest中读取classpath,而是从Index.list中读取 -->

<!--<index>true</index> -->

<manifest>

<!--启动类main方法-->

<mainClass>com.xl.xxx.XXXApplication</mainClass>

<!-- 是否指定classthpath-->

<addClasspath>true</addClasspath>

<!--为下面的的<Class-Path>添加前缀,默认为空,"./"为当前目录-->

<classpathPrefix>./</classpathPrefix>

</manifest>

<manifestEntries>

<Class-Path>../conf/</Class-Path>

</manifestEntries>

</archive>

<excludes>

<exclude>*</exclude>

<exclude>*/*</exclude>

<exclude>*/static</exclude>

</excludes>

</configuration>

</plugin>

<plugin>

<artifactId>maven-assembly-plugin</artifactId>

<executions>

<execution>

<id>make-dir</id>

<!-- 绑定到package生命周期阶段上 -->

<phase>package</phase>

<goals>

<!-- 绑定到package生命周期阶段上 -->

<goal>single</goal>

</goals>

<configuration>

<finalName>${project.artifactId}</finalName>

<!--配置描述文件路径-->

<descriptors> <!--描述文件路径-->

<descriptor>${project.basedir}/assembly/assembly.xml</descriptor>

</descriptors>

</configuration>

</execution>

</executions>

</plugin>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-surefire-plugin</artifactId>

<configuration>

<skipTests>true</skipTests>

</configuration>

</plugin>

</plugins>

</build>

上面配置中, 有maven-jar-plugin 默认打包插件, skipTest 打包跳过测试, 主要配置在  

maven-assembly-plugin

插件中

 

assmbly 配置

结构目录

xml配置

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd

http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 ">

<id>${project.version}</id><!--id 标识符,添加到生成文件名称的后缀符。可以不指定-->

<formats>

<!--打包方式,支持写多个包括(zip、tar、tar.gz (or tgz)、tar.bz2 (or tbz2)、jar、dir、war)-->

<format>tar.gz</format>

</formats>

<includeBaseDirectory>true</includeBaseDirectory>

<fileSets>

<!-- fileSet用于指定项目路径和打包后的相对路径的映射关系-->

<!--将所有resources文件下的文件打包在conf目录下-->

<fileSet>

<directory>${project.basedir}/src/main/resources</directory>

<outputDirectory>conf</outputDirectory>

</fileSet>

<!--将启动脚本打包在bin目录下-->

<fileSet>

<directory>${project.basedir}/bin</directory>

<outputDirectory>bin</outputDirectory>

</fileSet>

<!--你还可以将初始化sql文件等打包在init目录下-->

<fileSet>

<directory>${project.basedir}/sql</directory>

<outputDirectory>init</outputDirectory>

</fileSet>

</fileSets>

<dependencySets>

<dependencySet>

<useProjectArtifact>true</useProjectArtifact>

<outputDirectory>lib</outputDirectory>

<!-- 将scope为runtime的依赖包打包到lib目录下。 -->

<scope>runtime</scope>

</dependencySet>

</dependencySets>

</assembly>

 

bin脚本命令

start.sh

#!/bin/sh

nohup java -jar ../lib/demo-0.1.0-SNAPSHOT.jar >/dev/null 2>&1 &

echo $! > /var/run/demo.pid

stop.sh

#!/bin/sh

PID=$(cat /var/run/demo.pid)

kill -9 $PID

 

打包成功

 

打包成功后, 我们可以直接上传tag包至linux 服务器

部署流程

上传tag包 > 

 

 

 

 

 

以上是 springboot使用之快捷打包部署 的全部内容, 来源链接: utcz.com/z/513380.html

回到顶部