解決maven打包失敗:程序包xxxx不存在問題

用Maven引入本地jar包這種做法非常不合理,很容易導致團隊jar包混亂,最好嘗試搭建私服解決。

1.問題實質

Maven倉庫jar包下載失敗或項目引入本地jar包Maven沒有對應進行配置

2.問題原因

(1)因網絡或其他原因導致Maven下載jar包到本地倉庫失敗

(2)項目引入本地jar包,隻在編譯器裡進行瞭配置而沒有在Maven中進行配置

3.解決步驟

(1)查看對應出錯jar包的本地Maven倉庫jar包是否下載完整

如果如上圖所示將文件刪掉重新下載即可。

(2)如果出現在編譯器中可以找到jar包,但是用Maven打包報錯:

就要查看一下項目是否引入本地jar包但Maven沒有對其進行配置。

解決方案1

找到存放第三方jar包文件夾 (例如src/main/webapp/WEB-INF/lib)右鍵AddasLibrary加入項目運行庫:

然後配置Maven打包插件掃描額外jar包

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <encoding>UTF-8</encoding>
        <compilerArgs>
            <arg>-verbose</arg>
            <arg>-Xlint:unchecked</arg>
            <arg>-Xlint:deprecation</arg>
            <arg>-bootclasspath</arg>
            <arg>${env.JAVA_HOME}/jre/lib/rt.jar</arg>
            <arg>-extdirs</arg>
            <arg>${project.basedir}/src/main/webapp/WEB-INF/lib</arg>
        </compilerArgs>
    </configuration>
</plugin>

其中${project.basedir}為項目根結點

圖片引自:https://www.jb51.net/article/240010.htm,此方法多人嘗試成功但筆者沒有解決。

解決方案2

修改pom文件,引入依賴並且將scope設置為system

配置Maven打包插件

此方法親測可行,但筆者引入的本地jar數量太多,一個一個寫估計會累死。

解決方案3

將jar包安裝至本地倉庫後使用pom文件直接引入,進入需要引入的jar目錄,執行以下命令

mvn install:install-file -Dfile=druid-1.1.4.jar -DgroupId=com.alibaba -DartifactId=druid -Dversion=1.1.4 -Dpackaging=jar

執行後在本地倉庫中看到如下文件,說明安裝成功

此方法親測可行,理由同上,引入本地jar太多。

解決方案4

哪個模塊找不到jar包就單獨rebuild一下這個model,註意rebuild之後不要用maven的clean

rebuild完成之後再重新install

簡單粗暴,方便快捷,非常適合維護老項目。新項目就別這麼搞瞭,老老實實建私服吧。

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: