問題描述
通過Maven將Java項目推送至私有倉庫Nexus時,pom中的依賴全部丟失。如果其它項目引用了此pom,運行時有可能拋出 NoClassDefFoundError 錯誤,找不到 class 文件。
源代碼中的pom | 推送至Nexus的pom |
---|---|
問題原因
Maven 在打包Jar時,默認是不會將依賴的 Jar 打包的,而是通過 pom 文件進行構建。但在deploy時不指定pom文件的話, maven 就會自動生成一個幾乎是空的pom ,依賴關係缺失 。。
mvn deploy:deploy-file
-DgroupId={yourProjectGroupId} \
-DartifactId={yourProjectArtifactId}\
-Dfile={yourJarFile} \
-Durl={URL} \
-DrepositoryId={yourRepositoryId}\
-Dpackaging=jar\
-DpomFile=pom.xml // 指定該 jar 包的 pom 文件,如不指定,將生成一個默認的幾乎爲空的pom——本問題原因所在
問題解決
在mvn deploy時加上-DpomFile=pom.xml即可