maven插件之maven-assembly-plugin的使用

1.maven-assembly-plugin的作用

maven-assembly-plugin可用于打自定义的分发包,可以使用内置的预指定的descriptors,或自己编写descriptors的xml文件,将依赖,文档信息,以及单个文件或文件夹,自由的组合在一起。
在pom文件中的插件中定义,maven-assembly-plugin插件只有一个goal就是single

	 <plugin>
                  <groupId>org.apache.maven.pluginsgroupId>
                  <artifactId>maven-assembly-pluginartifactId>
                  <version>3.1.1version>
                  <configuration>
                    
                     
                    
                      <descriptors>
                          <descriptor>src/main/assembly/assembly.xmldescriptor>
                      descriptors>

                  configuration>

                  <executions>
                      <execution>
                          <id>make-assemblyid>
                          <phase>packagephase>
                          <goals>
                              <goal>singlegoal>
                          goals>

                      execution>
                  executions>
              plugin>

2.预制订的descriptor

maven-assembly-plugin插件预制定了4个descriptor,bin,jar-with-dependencies,src,project,其中jar-with-dependencies可以把依赖的jar都打成一个jar,其他的用的很少,详细的使用信息可以看官方的文档
http://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html

3.自定义descriptor的assembly.xml文件的编写

具体的标签类型看官方文档,下面介绍几个常用的元素
http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html

3.1 id

用于表示打包的文件集合的表示符,会用于生成的档案文件的文件名
maven插件之maven-assembly-plugin的使用_第1张图片

3.2 formats/format*

生成打包文件的文件类型,可以同时指定多种类型,每种类型的打包都会生成
zip,tar,tar.gz,tgz,tar.bz2,tar.snappy,tar.xz,txz,jar,dir,war

3.2 includeBaseDirectory

是否选择包含一个基础目录true/false,如果选择true,在最终存档中包含一个基本目录,如果baseDirectory元素指定了值,则使用该值,如果没有指定则使用${project.build.finalName}作为该值。例如,如果您正在创建一个名为“app”的程序集,将includeBaseDirectory设置为true将创建一个包含这个基本目录的存档。如果将此选项设置为false,则创建的存档将解压其内容到当前目录,对比如下,includeBaseDirectory为true
maven插件之maven-assembly-plugin的使用_第2张图片
includeBaseDirectory为false
maven插件之maven-assembly-plugin的使用_第3张图片

3.2 fileSet

用来处理文件集合将其按照指定的方式输出
outputDirectory:设置输出目录,该目录是相对与根目录的,
例如:
如果设置了includeBaseDirectory为false,那么实际的bin目录在**/target/**.tar.gz/bin/

	<fileSet>
            <directory>src/main/bindirectory>
            <includes>
                <include>*include>
            includes>
            <outputDirectory>binoutputDirectory>

        fileSet>

includes/include*:选择被包含的文件和目录,可以设置多个元素,如果未设置该元素,则默认包含所有有效的值

excludes/exclude*:选择剔除的文件或目录,如果未设置,则为none
fileMode:unix的文件权限,默认为0644
directoryMode:unix的设置目录权限,默认为0755

3.3 files

用来处理文件

<files>
        <file>
            <source>target/${project.artifactId}-${project.version}.warsource>
            <outputDirectory>.outputDirectory>
        file>
    files>

**source:**可以是相对路径或绝对路径,相对路径是相对与项目的根目录。
outputDirectory:输出目录
destName:输出文件名
fileMode:unix文件权限

3.3 dependencySets

用来处理文件集合将其按照指定的方式输出
outputDirectory:设置输出目录,该目录是相对与根目录的,
例如:

includes/include*:选择包含的依赖,可以设置多个元素,形式如groupId:artifactId,也可使用通配符 *:spring-*

excludes/exclude*:选择剔除的依赖,可以设置多个元素,形式如groupId:artifactId,也可使用通配符 *:spring-*
fileMode:unix的文件权限,默认为0644
scope:设置依赖的范围,默认为runtime
useProjectArtifact:是否包含当前项目自己生成的包,默认为true

完整实例如下:

<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">

    <id>binid>

    <includeBaseDirectory>falseincludeBaseDirectory>


    <formats>
        <format>tar.gzformat>
    formats>

   <dependencySets>
        <dependencySet>
            <outputDirectory>/liboutputDirectory>
        dependencySet>
    dependencySets>

    <fileSets>
        <fileSet>
            <directory>src/main/dbdirectory>
            <includes>
                <include>*.sqlinclude>
            includes>
            <fileMode>0755fileMode>
            <outputDirectory>./db/doutputDirectory>
        fileSet>

        <fileSet>
            <directory>${project.basedir}/srcdirectory>
            
        fileSet>

        <fileSet>
            <directory>src/main/bindirectory>
            <includes>
                <include>*include>
            includes>
            <outputDirectory>binoutputDirectory>

        fileSet>

    fileSets>

    <files>
        <file>
            <source>target/${project.artifactId}-${project.version}.warsource>
            <outputDirectory>.outputDirectory>
        file>
    files>

assembly>

你可能感兴趣的:(maven)