Java技術--maven的assembly插件打包(依賴包歸檔)


注:最近工作中遇到的一個問題,寫了一個日志處理的模塊,現在需要給第三方客戶使用,但是該模塊依賴了我們自己寫的或者修改的一些jar包,可選擇方案:1、所有jar包放在一個文件夾中給第三方(感覺好不專業);2、將日志處理模塊和依賴包全部打成一個jar包,明顯這種方法專業且方便。因此引入maven的assembly插件來完成這個工作。

     前提是:你的項目也是用maven來管理的。

 

1、在pom.xml文件中增加assembly插件:

<!-- for package -->
        <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <descriptors>
                        <descriptor>src/main/assembly/src.xml</descriptor>
                    </descriptors>
                </configuration>
        </plugin>

 

2、在源代碼main/assembly下創建一個src.xml文件,內容為:

<assembly
    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
    <id>jar-with-dependencies</id>
    <formats>
        <format>jar</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <dependencySets>
        <dependencySet>
            <useProjectArtifact>true</useProjectArtifact>
            <outputDirectory>/lib</outputDirectory>
            <unpack>false</unpack>
            <scope>runtime</scope>
        </dependencySet>
    </dependencySets>
    <fileSets>
        <fileSet>
            <directory>${project.build.outputDirectory}</directory>
            <outputDirectory>/</outputDirectory>
        </fileSet>
    </fileSets>
</assembly>

 

3、執行mvn assembly:assembly命令,則在target文件夾中會看見新創建的{artifactId}-jar-with-dependencies.jar這個jar包,如下圖:

 

4、查看這個jar包,可以看到有個lib文件夾,里面都是第三方依賴,此時的jar包由於包含第三方依賴,會比較大,上面的實際jar包有80M,如圖:

 

注:執行命令過程中,可能會出現test和javadoc方面的錯誤,可以使用下面的命令跳過test和Javadoc:

mvn assembly:assembly -Dmaven.test.skip=true -Dmaven.javadoc.skip=true

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM