zoukankan      html  css  js  c++  java
  • maven插件maven-assembly-plugin

    maven-assembly-plugin自定义打包方式

    大数据项目中往往有很多shell脚本、SQL脚本、.properties及.xml配置项等,采用assembly插件可以让输出的结构清晰而标准化。
    要使用该插件,就在项目pom文件中加入以下内容

        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>${maven-assembly-plugin.version}<version>
                    <executions>
                        <execution>
                            <id>make-assembly</id>
                            <!-- 绑定到package生命周期 -->
                            <phase>package</phase>
                            <goals>
                                <!-- 只运行一次 -->
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <!-- 配置描述符文件 -->
                        <descriptor>src/main/assembly/assembly.xml</descriptor>
                        <!-- 也可以使用Maven预配置的描述符
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs> -->
                    </configuration>
                </plugin>
            </plugins>
        </build>

    描述符文件元素

    id

    <id>release</id>

    id 标识符,添加到生成文件名称的后缀符。如果指定 id 的话,目标文件则是 ${artifactId}-${id}.tar.gz

    formats

    maven-assembly-plugin 支持的打包格式有zip、tar、tar.gz (or tgz)、tar.bz2 (or tbz2)、jar、dir、war,可以同时指定多个打包格式

    <formats>
        <format>tar.gz</format>
        <format>dir</format>
      </formats>

    dependencySets

    用来定制工程依赖 jar 包的打包方式,核心元素如下表所示。

    元素类型作用
    outputDirectory String 指定包依赖目录,该目录是相对于根目录
    includes/include* List<String> 包含依赖
    excludes/exclude* List<String> 排除依赖
    <dependencySets>
        <dependencySet>
          <outputDirectory>/lib</outputDirectory>
        </dependencySet>
      </dependencySets>

    fileSets

    管理一组文件的存放位置,核心元素如下表所示。

    元素类型作用
    outputDirectory String 指定文件集合的输出目录,该目录是相对于根目录
    includes/include* List<String> 包含文件
    excludes/exclude* List<String> 排除文件
    fileMode String 指定文件属性,使用八进制表达,分别为(User)(Group)(Other)所属属性,默认为 0644
     
    复制代码
    <fileSets>
        <fileSet>
          <includes>
            <include>bin/**</include>
          </includes>
          <fileMode>0755</fileMode>
        </fileSet>
    
        <fileSet>
          <includes>
            <include>/conf/**</include>
            <include>logs</include>
          </includes>
        </fileSet>
    
      </fileSets>
    复制代码

    files

    可以指定目的文件名到指定目录,其他和 fileSets 相同,核心元素如下表所示。

    元素类型作用
    source String 源文件,相对路径或绝对路径
    outputDirectory String 输出目录
    destName String 目标文件名
    fileMode String 设置文件 UNIX 属性
    复制代码
    <files>
        <file>
          <source>README.txt</source>
          <outputDirectory>/</outputDirectory>
        </file>
      </files>
    复制代码

     

     

    pom.xml

    复制代码
    <build>
      <finalName>scribe-log4j2-test</finalName>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
        </plugin>
    
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <configuration>
            <descriptors>
              <descriptor>src/main/assembly/release.xml</descriptor>
            </descriptors>
          </configuration>
    
          <executions>
            <execution>
              <id>make-assembly</id> <!-- this is used for inheritance merges -->
              <phase>package</phase> <!-- bind to the packaging phase -->
              <goals>
                <goal>single</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </build>
    复制代码

    release.xml

    复制代码
    <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
    
      <formats>
        <format>tar.gz</format>
        <format>dir</format>
      </formats>
    
      <dependencySets>
        <dependencySet>
          <outputDirectory>/lib</outputDirectory>
        </dependencySet>
      </dependencySets>
    
      <fileSets>
        <fileSet>
          <includes>
            <include>bin/**</include>
          </includes>
          <fileMode>0755</fileMode>
        </fileSet>
    
        <fileSet>
          <includes>
            <include>/conf/**</include>
            <include>logs</include>
          </includes>
        </fileSet>
    
      </fileSets>
    
      <files>
        <file>
          <source>README.txt</source>
          <outputDirectory>/</outputDirectory>
        </file>
      </files>
    
    </assembly>
    复制代码

    最终创建生成可执行二进制工程

    一个完整的使用assembly的项目:https://gitee.com/wangbin2188/data-migration/tree/develop

  • 相关阅读:
    ecplise 导出maven项目依赖的jar
    vue.js 中组件的使用
    爬虫:python采集豆瓣影评信息并进行数据分析
    Python爬取前程无忧十万条招聘数据
    爬虫:新浪微博爬虫的最简单办法
    爬虫:利用python完成百度贴吧数据采集
    基于SSM框架的新生报到可视化系统
    爬虫:利用selenium采集某某环境网站的空气质量数据
    基于flask框架的高校舆情分析系统
    基于flask的城市空气质量分析系统
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/14266458.html
Copyright © 2011-2022 走看看