天天看點

maven-自定義打包maven-assembly-plugin插件

插件名稱: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:添加到打封包件名的辨別符,用來做字尾;例如bin,格式為 ${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屬性來設定與源檔案不同的名稱

參考:官網: assembly插件官網介紹

如果轉載此博文,請附上本文連結,謝謝合作~ : https://liyangyang.blog.csdn.net/

如果感覺這篇文章對您有所幫助,請點選一下“喜歡”或者“關注”部落客,您的喜歡和關注将是我前進的最大動力!