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


    微服务必备

    优点:

      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文件

    <?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文件,这个文件则是我们部署项目需要的

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

    4.打包方式思考

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

    启动服务

  • 相关阅读:
    【集训第二天·翻水的老师】--ac自动机+splay树
    【集训第一天·特来卖萌】树链剖分之水水的例题
    1.ARM寄存器简解
    2.汇编代码的简单实现
    Android之Activity 生命周期
    Android之SQLite
    魅族 -- 禁止D及以下级别LOG的输出
    常用的SQL语句
    Android开发工具
    Android介绍
  • 原文地址:https://www.cnblogs.com/lemon-flm/p/10114595.html
Copyright © 2020-2023  润新知