簡體   English   中英

Gradle:根據Maven Local或Remote存儲庫中的最新版本解決SNAPSHOT依賴性

[英]Gradle: resolve SNAPSHOT-dependency based on most recent version in either Maven Local or Remote repository

我想讓gradle智能地使用最新的SNAPSHOT來獲得可用的給定依賴項。

假設我有一個這樣的構建文件:

mavenCentral()
//    if (gradle.startParameter.refreshDependencies == false) {
    mavenLocal()
//   }
    maven {
      url "my_local_repo.com
   }
}

使用如下列出的依賴項:

compile (group: 'com.mystuff', name: 'my-library', version: '1.0.0-SNAPSHOT', changing: 'true')

Maven Local和Remote repo“my_local_repo.com”中可能存在哪些內容,如何確保Gradle始終使用最新的快照進行編譯?

我在這里讀到:

http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html

具體點8.5:

一個項目可以有多個存儲庫。 Gradle將按照指定的順序在每個存儲庫中查找依賴項,並在包含所請求模塊的第一個存儲庫中停止。

讓我相信mavneLocal版本將永遠是首選,但我的閱讀

51.7這里:

http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:repositories

給定必需的依賴項,Gradle首先嘗試解析該依賴項的模塊。 按順序檢查每個存儲庫,首先搜索指示該模塊是否存在的模塊描述符文件(POM或Ivy文件)。 如果未找到模塊描述符,Gradle將搜索是否存在主模塊工件文件,指示該模塊存在於存儲庫中。 ...一旦檢查了每個存儲庫的模塊,Gradle將選擇要使用的“最佳”存儲庫。 這是使用以下標准完成的:

和51.2.4

或者,有時您請求的模塊可能會隨着時間的推移而發生變化,即使是相同的版本。 這種類型的更改模塊的一個示例是Maven SNAPSHOT模塊,它始終指向已發布的最新工件。 換句話說,標准的Maven快照是一個永遠不會停滯不前的模塊,它是一個“改變模塊”。

大致的泥濘。 它似乎說所有的回購都被檢查並且做出了“最佳”選擇(在這種情況下可能是最新的)。

我認為你忘了在第51.7節中強調的一點是:

當依賴項由靜態版本聲明並且在存儲庫中找到模塊描述符文件時,不需要繼續搜索以后的存儲庫,並且該進程的其余部分被短路。

這與第8.5節中所述的內容一致。 但是,是的,對於更改模塊(即快照),Gradle將檢查每個倉庫以找到最新的工件。 對於靜態模塊,它只需要找到它找到的第一個。

暫無
暫無

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

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