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

摘要:
maven jar插件<插件>maven汇编插件<版本>2.2.1和lt;配置>--绑定到包生命周期阶段--&gt--仅运行一次--&gt/执行&gt!/插件>

微服务必备

优点:

  1、可以直接导入依赖jar包

  2、可以添加插件启动 .sh 文件

  3、插件的配置以及微服务的统一打包方式

1.首先我们需要在pom.xml中配置maven的assembly插件

<build>
        <plugins>
            <plugin>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <classesDirectory>target/classes/</classesDirectory>
                    <excludes>
                        <exclude>**/*.properties</exclude>
                        <exclude>**/*.xml</exclude>
                        <exclude>**/*.txt</exclude>
                        <exclude>**/*.list</exclude>
                    </excludes>
                    <archive>
                        <addMavenDescriptor>false</addMavenDescriptor>
                    </archive>
                </configuration>
            </plugin>
            <!-- 重点配置这个 assembly -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.2.1</version>
                <configuration>
                    <descriptors>
                        <descriptor>src/main/assembly.xml</descriptor>  <!--配置描述文件路径--> 
                    </descriptors>
                </configuration>
                <executions>
                    <execution>           <!-- 配置执行器 -->     
                        <id>make-assembly</id>  
                        <phase>package</phase>  <!-- 绑定到package生命周期阶段上 -->
                        <goals>
                            <goal>single</goal>  <!-- 只运行一次 --> 
                        </goals>
                    </execution>
                </executions>
            </plugin>
            
            
        </plugins>
    </build>

2.接着我们在src/main/assembly文件中配置assembly.xml文件

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

<?xml version="1.0" encoding="UTF-8"?>
<assembly>
  <id>bin</id>
  <formats>
    <format>zip</format>                  <!--打包的文件格式,也可以有:war zip tar.gz-->
  </formats>
  <dependencySets>
    <dependencySet>
      <useProjectArtifact>true</useProjectArtifact>  <!-- zip 压缩包下是否生成和项目名相同的根目录-->
      <outputDirectory>lib</outputDirectory>      <!-- 依赖目录添加 生成的lib文件夹下放该项目的所有依赖以及该服务jar包 -->
    </dependencySet>
  </dependencySets>
  <fileSets>
    <fileSet>
      <directory>src/main/scripts</directory>     <!-- 脚本文件用来开启和关闭该服务,打包后直接放到根目录下  server.sh 脚本 -->
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>*</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>src/main/resource</directory>
      <outputDirectory>/conf</outputDirectory>
      <includes>
        <include>*</include>
      </includes>
    </fileSet>
  </fileSets>
</assembly>

其中,生成的lib文件夹下放该项目的所有依赖以及该服务jar包,src/main/bin文件夹下我们一般放个脚本文件用来开启和关闭该服务,打包后直接放到根目录下。生成的tar.gz文件的名字为:maven-assembly-plugin插件中配置的finalName-assembly.xml配置的id(若assembly中没有指定id,则只有前半部分).

assembly的具体语法,请参见官网:http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html

这里面涉及到如何生成可执行的jar包,具体参见:用Maven快速生成带有依赖的可执行jar包

3. 打包目录结构

maven打包时候,我们发现目录下多了个.zip文件,这个文件则是我们部署项目需要的

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

.zip文件下则有一个启动脚本、lib依赖jar包,conf配置文件

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

4.打包方式思考

我们通过这种方式,每个微服务就是一个以服务名称命名的zip文件,解压后里面lib目录下是该服务生成的可执行jar包以及它所有的依赖jar包,我们直接运行根目录下server.sh脚本文件来进行服务的开启和关闭。风格统一,简单明了!

启动服务

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

免责声明:文章转载自《Maven的assembly插件实现自定义打包部署(包含依赖jar包)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇剖析 Linux hypervisor宝塔面板SSpanel-v3-mod安装教程 搭建sspanel v3魔改前端下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

NumPy-快速处理数据--ndarray对象--多维数组的存取、结构体数组存取、内存对齐、Numpy内存结构

本文摘自《用Python做科学计算》,版权归原作者所有。 上一篇讲到:NumPy-快速处理数据--ndarray对象--数组的创建和存取 接下来接着介绍多维数组的存取、结构体数组存取、内存对齐、Numpy内存结构 一、多维数组的存取 多维数组的存取和一维数组类似,因为多维数组有多个轴,因此它的下标需要用多个值来表示,NumPy采用组元(tuple)作为数组...

git提交时忽略了dll

问题说明 突然出现torisegit会自动忽略*.dll文件不会提交,比如:CSharp.dll。 ​ 问题原因 原因是由于安装了Sourcetree,受到了其环境变量的影响。 ​ Windows系统解决方法 解决方法如下: 打开 Sourcetree -> 工具 ->选项->Git,找到全局忽略列表,点击右侧编辑文件,找到*.dll,删...

.net core 3.1

一、安装选择预发行版  配置代码 using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNet...

dedeCMS自定义dede标签

在include/taglib文件夹中新建文件hlh.lib.php,其中hlh也就是你标签的名字,function的名字也必须跟文件名对应,固定格式lib_标签名,如lib_hlh,本例子以调取文章为例 <?php /** * Created by PhpStorm. * User: 侯蜀黍 * Date: 2019/4/24 * Time...

解决配置vim中文乱码的问题

解决linux下vim乱码的情况:(修改vimrc的内容) 全局的情况下:即所有用户都能用这个配置 文件地址:/etc/vimrc 在文件中添加: set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936 set termencoding=utf-8 set encoding=utf-8 如果只修改个...

Spring jar包详解(转)

spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到spring-mock.jar来进行辅助测试,正式应用系统中是用不得这些类的。     除了spring.jar文件,Spring还包括有其它13个独立的jar包,各自包含着对应...