簡體   English   中英

強制 Maven 使用內部和外部依賴 jars

[英]Force Maven to use internal and external dependency jars

我已將 Jenkins 集成到我的 Maven Selenium Java 項目中。 我有一個“SeleniumUtils-0.0.2-14.0.0.0.jar”,它在 POM.xml 中被稱為:

<dependency>
            <groupId>com.disney.gqe</groupId>
            <artifactId>SeleniumUtils</artifactId>
            <version>0.0.2-14.0.0.0</version> 
</dependency>

這個 Jar 是以前的程序員在本地交給我的。 那時 Jenkins 構建還沒有實現。 該項目在 Eclipse 中本地運行良好,引用來自 m2/repo 文件夾的 jar。 當我在 Jenkins 中使用“全新安裝”進行構建時,出現錯誤:從中央下載: https : //repo.maven.apache.org/maven2/com/disney/gqe/SeleniumUtils/0.0.2-14.0.0.0/SeleniumUtils -0.0.2-14.0.0.0.jar

我不希望 Maven 在中央搜索這個 jar,因為我在本地有它。 如何在 Jenkins repo 文件夾中本地添加文件並構建項目?

@JFMeier 是絕對正確的,您應該將依賴項放在托管的 Maven 存儲庫中。

但是,如果您沒有,您可以這樣做:

<dependency>
  <groupId>com.disney.gqe</groupId>
  <artifactId>SeleniumUtils</artifactId>
  <version>0.0.2-14.0.0.0</version> 
  <scope>system</scope>
  <systemPath>path/to/the/jar</systemPath>
</dependency>

請注意,我並不是說這是個好主意,但是具有system范圍的依賴項將阻止 Maven 從外部查找依賴項。

系統范圍依賴的問題在於,現在每次有人(其他人)需要進行構建時,他們都必須將 jar 放在與您相同的位置。 您可以通過在每個用戶的settings.xml引入一個屬性參數來規避這一點,但是現在您有一個需要管理的維護問題。

你被警告了。

如果你有一個 Jenkins,你可能有一個 Nexus 或 Artifactory(這至少是推薦的存儲你構建的工件的地方)。 這個 Nexus 或 Artifactory 也是放置你提到的庫的地方。

如果您使用“全新安裝”構建項目,則默認情況下它將清理本地 .m2 存儲庫,並嘗試從本地 pom.xml 或 Settings.xml 文件中的存儲庫可用列表中下載它。

如果您已將 jar 復制到本地存儲庫中,請嘗試僅使用“安裝”而不使用“干凈”來構建項目。

您可以根據需要強制執行updatePolicy以在$USER_HOME/.m2/settings.xml下實現

http://maven.apache.org/settings.html#Repositories

updatePolicy:此元素指定嘗試更新的頻率。 Maven 會將本地 POM 的時間戳(存儲在存儲庫的 maven-metadata 文件中)與遠程進行比較。 選項有:always、daily(默認)、interval:X(其中 X 是一個以分鍾為單位的整數)或從不。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM