Maven將引用項/依賴包打包到jar文件中


mvn package命令只能用於沒有引用項/依賴包的打包。

 

解決方法:

如果要把引用項/依賴包打包到運行jar文件中,有2個可選插件:

maven-assembly-plugin
maven-shade-plugin

下面使用的是maven-assembly-plugin插件。

在pom.xml中加入以下內容:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                        <mainClass>這里填寫主類名,例如com.clotho.util.Calculate</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

保存后,刷新Maven。

在命令行中輸入:

mvn assembly:assembly

程序會自動把引用包也一起打包到jar文件中

 

附錄:

1.提示“找不到plugins”錯誤的處理

如果使用的是IDEA,提示“Maven plugins can not be found”,可按以下步驟解決:

File -> Setting -> Build, Execution, Deployment -> Build Tools -> Maven -> 勾選Use plugin registry選項

然后,

File -> Invalidate Caches -> Invalidate and Restart(重啟IDEA)

 

2.指定jar文件名

在build標簽中增加<finalName>指定的jar文件名</finalName>

例如,要把jar文件名改成MyJarName:

<build>
    <finalName>MyJarName</finalName>
</build>

 

3.去掉包含依賴包的jar文件名的名字后綴

maven-assembly-plugin會生成2個jar包,一個是原名(沒包含依賴包),一個是帶后綴名(包含了依賴包)

后綴名是在descriptorRef標簽中配置,例如上面方法配置的是jar-with-dependencies:

<descriptorRef>jar-with-dependencies</descriptorRef>

如果注釋掉這行,或去掉里面的jar-with-dependencies,編譯時會報錯。

解決方法是在configuration表中中加入一行<appendAssemblyId>false</appendAssemblyId>,例如:

<configuration>
    <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
    <appendAssemblyId>false</appendAssemblyId>
</configuration>

 


免責聲明!

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



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