使用Maven安装本地jar
1.問題與選擇
Maven是一種非常通用的工具,其可用的公共存儲庫首屈一指。 但是,總會有一個不在任何地方托管的工件,或者托管該工件的存儲庫有依賴的風險,因為當您需要它時,它可能不會啟動。 發生這種情況時,有幾種選擇:
- 硬著頭皮安裝完整的版本庫管理解決方案, 例如Nexus
- 嘗試將工件上傳到更知名的公共存儲庫之一
- 使用Maven插件在本地安裝工件
Nexus當然是更成熟的解決方案,但也更復雜 。 設置一個實例來運行Nexus,設置Nexus本身,配置和維護它對于使用單個jar這樣的簡單問題來說可能是過大的。 但是,如果這種情況(托管自定義工件)很常見,那么存儲庫管理器就很有意義。
將工件直接上傳到公共存儲庫或直接在Maven Central中也是一種很好的解決方案,但通常是一個漫長的解決方案。 另外,該庫可能根本沒有啟用Maven,這使得處理過程變得更加困難,因此,現在就不能使用工件就不是一個現實的解決方案。 剩下的第三個選擇是在源代碼管理中添加工件,并使用maven插件。在這種情況下, maven-install-plugin可以在構建過程需要它之前在本地安裝它 。 到目前為止,這是最簡單,最可靠的選項。
2.使用
讓我們從將工件安裝到本地存儲庫所需的完整配置開始:
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-install-plugin</artifactId><version>2.4</version><configuration><groupId>org.somegroup</groupId><artifactId>someartifact</artifactId><version>1.0</version><packaging>jar</packaging><file>${basedir}/dependencies/someartifact-1.0.jar</file><generatePom>true</generatePom></configuration><executions><execution><id>install-jar-lib</id><goals><goal>install-file</goal></goals><phase>validate</phase></execution></executions> </plugin>現在,讓我們分解并分析此配置的詳細信息。
2.1。 工件信息
工件信息定義為<configuration>元素的一部分。 實際語法與聲明依賴項非常相似– groupId , artifactId和version元素。 配置的下一部分需要定義工件的包裝 -指定為jar 。 接下來,我們需要使用Maven中提供的屬性提供要安裝的實際jar文件的位置 -這可以是絕對文件路徑,也可以是相對路徑。 在這種情況下, $ {basedir}屬性表示項目的根,即pom.xml文件所在的位置。 這意味著someartifact-1.0.jar文件需要放在根目錄下的/ dependencies /目錄中。 最后,還有一些其他可選詳細信息也可以配置。
2.2。 行刑
安裝文件目標的執行被綁定到標準Maven 構建生命周期中的驗證階段 。 這樣一來,便可以在生命周期的開始就安裝工件,而在下一個編譯階段才真正需要它。 一旦執行了編譯階段, 便會將我們的artartifact-1.0.jar正確安裝在我們的本地存儲庫中,就像從Maven Central本身中檢索到的任何其他工件一樣。
2.3。 生成pom與提供pom
是否需要為工件提供pom.xml文件的問題主要取決于工件本身的運行時依賴性 。 簡而言之,如果工件在其他jar上具有運行時相關性,則這些jar也將需要在運行時出現在類路徑上。 使用簡單的工件應該不會有問題,因為它在運行時可能沒有依賴關系(依賴關系圖中的葉子)。 安裝文件目標中的generatePom選項應足以滿足以下這些條件:
<generatePom>true</generatePom>但是,如果工件更加復雜并且確實具有非平凡的依賴關系 ,那么,如果這些依賴關系尚未在類路徑中,則必須添加它們。 一種方法是通過在項目的pom文件中手動定義這些新的依賴項。 更好的解決方案是提供一個自定義pom.xml文件以及已安裝的工件:
<generatePom>false</generatePom> <pomFile>${basedir}/dependencies/someartifact-1.0.pom</pomFile>這將使Maven可以解析此自定義pom.xml中定義的工件的所有依賴關系,而不必在項目的主pom文件中手動定義它們。
3.結論
本文通過使用maven-install-plugin在本地安裝jar,探討了如何使用不在Maven項目中任何地方托管的jar。
翻譯自: https://www.javacodegeeks.com/2013/04/install-local-jar-with-maven.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的使用Maven安装本地jar的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 酒窝和梨涡哪个更珍贵更美(酒窝和梨涡的区
- 下一篇: 所谓的直女是什么样的性格(钢铁直女有哪些