一、使用场景
如果项目是微服务架构,可能用到这个插件的概率比较高,平时普通的项目不需要这样的实现方式。
如果项目内的一部分通用功能,不需要挨个引用,则需要将通用功能部分达成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}srcmain esources</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和对应的目录.