pom文件中maven-assembly-plugin插件学习

一、使用场景

如果项目是微服务架构,可能用到这个插件的概率比较高,平时普通的项目不需要这样的实现方式。

如果项目内的一部分通用功能,不需要挨个引用,则需要将通用功能部分达成jar包。

 

二、Maven-assembly-plugin作用

1、作用:要想将写的程序和它本身所依赖的jar包一起build到一个包里,是maven中针对打包任务而提供的标准插件。

 2、其他作用:

1)提供一个把工程依赖元素、模块、网站文档等其他文件存放到单个归档文件里。

2)打包成指定格式分发包,支持各种主流的格式如zip、tar.gz、jar和war等,具体打包哪些文件是高度可控的。

3)能够自定义包含/排除指定的目录或文件。

 

三、总体来说,插件maven-assembly-plugin的使用分为3个步骤:

首先贴下我项目路径的截图:

 

1:pom.xml文件里配置maven-assembly-plugin,指定描述文件

2:描述文件配置具体参数

3: 命令行下执行 mvn assembly:assembly -Dmaven.test.skip=true

 

对应步骤1  ------>    项目中pom.xml的配置如下,在build中加入:

 

    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
            <plugins>
                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                        <appendAssemblyId>false</appendAssemblyId>
                        <descriptors>
                            <!-- 描述文件路径-->
                            <descriptor>src/main/assembly/assembly.xml</descriptor>
                        </descriptors>
                    </configuration>
                    <executions>
                        <execution>
                            <id>make-assembly</id>
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>

描述文件assembly.xml的内容:     

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <id>distribution</id>
    <formats>
        <format>dir</format>
    </formats>
  <!--  <fileSets>
        <fileSet>
            <directory>${project.basedir}\src\main\resources</directory>
            <outputDirectory>\</outputDirectory>
        </fileSet>

    </fileSets>-->
    <dependencySets>
        <dependencySet>
            <useProjectArtifact>true</useProjectArtifact>
            <outputDirectory>lib</outputDirectory>
            <!-- 将scope为runtime的依赖包打包到lib目录下。 -->
            <scope>runtime</scope>
            <excludes>
                <exclude>${org.apache.jmeter}:${ApacheJMeter_java}</exclude>
            </excludes>
        </dependencySet>
    </dependencySets></assembly>

3. 在命令行下,到pom.xml所在目录下,执行 mvn assembly:assembly -Dmaven.test.skip=true

在项目的target下可以看到打包之后得到的jar和对应的目录.

 

posted on 2018-05-08 15:12  babyblue  阅读(1429)  评论(0编辑  收藏  举报