Maven微服务(多模块)打jar包之maven-assembly-plugin配置详解(二)

1、maven-assembly-plugin插件介绍java

Assembly 插件的主要做用是,容许用户将项目输出与它的依赖项、模块、站点文档、和其余文件一块儿组装成一个可分发的归档文件,简单的说,就是自定义打包的工具,有本身的配置文件(Assembly描述符文件)。微服务使用这个插件的几率比较高,平时普通的项目不须要这样的实现方式。spring

使用此插件有两个步骤:apache

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

第2步骤:引入Assembly描述符文件。配置Assembly描述符文件信息,以下:app

?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 标识符,添加到生成文件名称的后缀符-->
    <id>${project.version}</id>
    
    <!-- 指定打包格式。maven-assembly-plugin插件支持的打包格式有zip、tar、tar.gz (or tgz)、tar.bz2 (or tbz2)、jar、dir、war,能够同时指定多个打包格式 -->
    <formats>
        <format>jar</format>
    </formats>
    
    <!-- 指定打的包是否包含打包层目录(好比finalName是terminal-dispatch,当值为true,全部文件被放在包内的terminal-dispatch目录下,不然直接放在包的根目录下)-->
    <includeBaseDirectory>true</includeBaseDirectory>
    
    <!-- 指定将工程依赖的包打到包里的指定目录下 -->
    <dependencySets>
        <dependencySet>
            <useProjectArtifact>true</useProjectArtifact> <!-- 指定打包时是否包含工程自身生成的jar包 -->
            <outputDirectory>lib</outputDirectory> <!-- 指定将这些依赖包打到包里lib目录下 -->
            <scope>runtime</scope> <!-- 用于管理依赖的部署,runtime表示只在运行时使用 -->
        </dependencySet>
    </dependencySets>
    
    <!-- 指定要包含的文件集,能够定义多个fileSet -->
    <fileSets>
        <fileSet>
            <directory>src/main/java</directory> <!-- 指定要打成jar包的目录(下的文件及文件夹) -->
            <outputDirectory>bin</outputDirectory> <!-- 指定要将当前目录(<directory>标签中的目录放在归档文件(要打的jar包)bin目录下) -->
            <includes>
                <include>dao</include> <!-- 精确控制要包含的文件,<exclude>用于精确控制要排除的文件  -->
                <include>server</include>
            </includes>
        </fileSet>        
        <fileSet>
            <directory>src/main/resources</directory>
            <outputDirectory>conf</outputDirectory>
            <includes>
                <include>config.properties</include>
                <include>logback.xml</include>
            </includes>
        </fileSet>
    </fileSets>
</assembly>

2、实战maven

项目路径:微服务

添加依赖工具

父级:学习

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>${maven-assembly-plugin.version}</version>
</plugin>

子级:spa

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <!-- 打包的文件名称是否包含Assembly描述符文件的id -->
        <appendAssemblyId>false</appendAssemblyId>
        <descriptors>
            <descriptor>src/main/assembly/depolyment.xml</descriptor>
        </descriptors>
    </configuration>
    <executions>
        <execution>
            <id>dist</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Assembly描述符文件路径

Assembly描述符文件配置

<?xml version="1.0" encoding="UTF-8"?>
<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>dist</id>
    <formats>
        <format>zip</format>
    </formats>
    <includeBaseDirectory>true</includeBaseDirectory>
    <fileSets>
        <fileSet>
            <directory>src/main/java</directory>
            <outputDirectory>bin/</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>src/main/resources</directory>
            <outputDirectory>bin/</outputDirectory>
        </fileSet>
    </fileSets>
    <dependencySets>
        <dependencySet>
            <outputDirectory>lib/</outputDirectory>
            <scope>runtime</scope>
            <excludes>
                <exclude>${groupId}:${artifactId}</exclude>
            </excludes>
        </dependencySet>
    </dependencySets>
</assembly>

执行maven打包,target生成zip文件,以下图:

解压缩目录:

以上打包方法的主要做用是生成微服务admin运行所须要的jar文件,下一篇继续学习整合springboot微服务模块maven打包整合终结篇。

相关文章
相关标签/搜索