1. 程式人生 > >maven打包時包含本地jar

maven打包時包含本地jar

專案中需要使用maven的打包工具,生成zip壓縮包,使用的外掛是assembly-plugin。因為一些特殊的原因,需要使用一些本地的jar進行依賴,載入外部jar後編碼過程中沒有任何問題,但是打包時一直報“程式包不存在”。

思考一下:Maven本質上是一個外掛框架,它的核心並不執行任何具體的構建任務,所以雖然在開發過程中專案正常依賴沒有任何問題,但是打包的時候肯定就找不到本地的jar了。

這種問題有很多解決方案,比如加入本地倉庫、搭建maven私服等,如需這些解決方案自行谷歌百度,資料很多。

因為maven編譯使用的外掛是maven-compiler-plugin,所以只能在maven-compiler-plugin上找問題了,正常情況下的maven-compiler-plugin簡單配置如下:

<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.5.1</version>
				<configuration>
					<source>${jdk.version}</source>
					<target>${jdk.version}</target>
					<showWarnings>true</showWarnings>
					<compilerArgs>
						<arg>-extdirs</arg>
						<arg>${project.basedir}/src/lib</arg>
					</compilerArgs>
				</configuration>
			</plugin>

  

需要注意的是最好新增${project.basedir}以便有更好的相容性。

修改上述編譯外掛後,打包正常,不再報錯,但是有一個新的問題產生。生成的zip包並不包含依賴的本地jar。

修改maven-assembly-plugin外掛的配置檔案,增加如下配置:

<fileSet>      
    <directory>src\lib</directory>
    <outputDirectory>lib</outputDirectory>
</fileSet>

  

意思是把src\lib下的jar輸出到target根目錄lib下。

至此,使用maven的package命令,已能正常執行,併成功把本地jar包打入zip壓縮包的lib目錄下。