除非您的Java EE服務器/容器配置了該jar,否則不能使用systemPath。
請記住,maven只是開發和編譯時間。一旦構建了war文件,除了將所有需要的jar文件放入WEB-INF/lib文件夾之外,maven沒有任何作用。
當您指定系統範圍時,這意味着您有責任在部署戰爭時確保該jar存在。你已經有了一個框架來做到這一點,你不希望用這個jar來阻礙你的構建依賴,但是你只能在開發過程中使它可用於Maven。
其他類似的範圍是「提供」。例如JBoss或您的企業常見部署Tomcat框架已經提供了很多像Spring和Hibernate這樣的jar,它們是由服務器啓動加載的,並且是服務器中所有應用程序共有的。因此,你不希望Maven構建將其包含到war文件中。
正確的方式,Maven大師會告訴你。就是擁有你自己的Maven服務器,並在你的服務器上構建你需要的任何工件。然而,偶爾這是不可能的。
因此,在這種情況下,我創建了與項目一起分發並簽入版本控制的項目級存儲庫。我運行命令mvn install
來創建一個名爲「project-repo」的項目級目錄。
http://maven.apache.org/plugins/maven-install-plugin/examples/specific-local-repo.html(由於熟悉,大多數時候,我手動構建回購站而不是運行mvn install)。
然後在POM中,我指定file:// $ {project.basedir}/project-repo作爲其中一個存儲庫。需要注意的是,在Windows中,「file://」之後的斜槓不是在引用Windows文件系統路徑時必須反斜槓。
<repositories>
<repository>
<id>my-repo1</id>
<name>my custom repo</name>
<url>http://ho.ho.ho</url>
</repository>
<repository>
<id>project-repo</id>
<name>my project repo</name>
<url>file://${project.basedir}\project-repo</url>
</repository>
</repositories>
請詳細 –
看從@BlessedGeek的答案,也對這個相關的SO問題的博客:http://stackoverflow.com/questions/2229757/maven-add-a-dependency-to-jar -by-relative-path/2230464#2230464 – maba
請參閱https://stackoverflow.com/a/45120371/1709793 – craftsmannadeem