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>