美文网首页Java必知必会
maven-自定义打包maven-assembly-plugin

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

作者: 洋仔聊编程 | 来源:发表于2020-03-17 19:54 被阅读0次

    插件名称:maven-assembly-plugin
    目前最新的版本:3.2.0
    作用:该插件可以使用户根据自己的需求自定义打包规则和打包类型

    pom文件配置示例

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.2.0</version>
            <configuration>
                <finalName>testProject</finalName>   <!-- 配置打包后的文件前缀名 -->
                <descriptors>
                   <descriptor>src/main/assembly/package.xml</descriptor>   <!-- 配置文件路径 -->
                </descriptors>
            </configuration>
            <executions> <!-- 配置assembly goals -->
                <execution> 
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                 </execution>
            </executions>
        </plugin>
    

    package.xml文件自定义打包配置

    <?xml version="1.0" encoding="UTF-8"?>
    <assembly>
        <!-- 最终打包文件的后缀,格式为 ${fileName}-bin -->
        <id>bin</id>
        <!-- 最终打包成一个用于发布的zip文件 -->
        <formats>
            <format>zip</format>
        </formats>
    
        <!-- 把依赖的jar包打包进zip的lib目录下-->
        <dependencySets>
            <dependencySet>
                <!-- 不使用项目的artifact -->
                <useProjectArtifact>false</useProjectArtifact>
                <!-- 打包进zip文件下的lib目录中  -->
                <outputDirectory>lib</outputDirectory>
                <!-- 第三方jar不要解压 -->
                <unpack>false</unpack>
            </dependencySet>
        </dependencySets>
    
        <!-- 文件配置 -->
        <fileSets>
            <!-- 把项目的配置文件,打包进zip包的config目录下    -->
            <fileSet>
                <!-- 配置项目中需要被打包的文件的存储路径 -->
                <directory>${project.basedir}/src/main/resources/${env}</directory>
                <outputDirectory>/config</outputDirectory>
                <includes>
                    <!-- 可以指定单个文件 -->
                    <!--<include>project.config</include>-->
                    <!-- 可以直接指定所有文件 -->
                    <include>*.*</include>
                </includes>
            </fileSet>
    
            <!-- 把项目的配置文件,打包进zip包的根目录下    -->
            <fileSet>
                <directory>${project.basedir}/src/main/resources/${env}</directory>
                <outputDirectory></outputDirectory>
                <includes>
                    <include>scf*.xml</include>
                </includes>
            </fileSet>
    
            <!-- 把项目自己编译出来根目录下的jar文件,打包进zip文件的根目录 -->
            <fileSet>
                <directory>${project.build.directory}</directory>
                <outputDirectory></outputDirectory>
                <includes>
                    <include>*.jar</include>
                </includes>
            </fileSet>
    
            <!-- 把项目自己编译出来的jar文件夹下的jar文件,去除第三方jar,打包进zip文件的根目录 -->
            <fileSet>
                <directory>${project.build.directory}/jar</directory>
                <outputDirectory></outputDirectory>
                <excludes>
                    <exclude>lib/*.jar</exclude>
                </excludes>
                <includes>
                    <include>*.jar</include>
                </includes>
            </fileSet>
        </fileSets>
    </assembly>
    

    运行maven的package后,会进行编译和打包,按照上述的配置会多产生一个testProject-bin.zip文件
    或者直接运行plugins-assembly下的assembly:single,这样项目不会重新编译,只会将相应的文件按照上述配置打包成testProject-bin.zip文件

    testProject-bin.zip文件解压后的目录结构
    - testProject-bin.zip
    -- testProject
    -- -- config
    -- -- -- project.config
    -- -- -- project2.config
    -- -- lib
    -- -- -- log4j-core-2.8.2.jar
    -- -- -- mybatis-3.2.3.jar
    -- -- -- ...
    -- -- testProject.jar
    -- -- log4j2.xml

    下面对上述简单介绍一下

    id:添加到打包文件名的标识符,用来做后缀;例如<id>bin</id>,格式为 ${fileName}-bin
    formats:是assembly插件支持的打包文件格式,有zip、tar、tar.gz、tar.bz2、jar、war。可以同时定义多个format;如果按上面的配置,生成的文件就是${fileName}-bin.zip。

    dependencySets/dependencySet
    设置工程依赖文件在打包时的属性。也与fileSets大致相同,不过还有两个特殊的配置:

    • unpack:布尔值,false表示将依赖以原来的JAR形式打包,true则表示将依赖解成*.class文件的目录结构打包。
    • scope:表示符合哪个作用范围的依赖会被打包进去。compile与provided都不用管,一般是写runtime。

    fileSets/fileSet
    fileSet用来设置一组文件在打包时的属性

    • directory:源目录的路径
    • includes/excludes:设定包含或排除哪些文件,支持通配符
    • fileMode:指定该目录下的文件属性,采用Unix八进制描述法,默认值是0644
    • outputDirectory:生成目录的路径

    files/file
    与fileSets大致相同,不过是指定单个文件,还可以通过destName属性来设置与源文件不同的名称

    博主公众号:[Coder技术栈],微信可扫码关注


    在这里插入图片描述

    参考:官网: assembly插件官网介绍

    如果转载此博文,请附上本文链接,谢谢合作~

    如果感觉这篇文章对您有所帮助,请点击一下“喜欢”或者“关注”博主,您的喜欢和关注将是我前进的最大动力!

    相关文章

      网友评论

        本文标题:maven-自定义打包maven-assembly-plugin

        本文链接:https://www.haomeiwen.com/subject/cosxyhtx.html