在我的Gradle項目中,我需要定義兩種類型的存儲庫:一個平面目錄和一個Maven存儲庫(本地Nexus服務器)。在Gradle中合併/解析兩個存儲庫類型
我可以分開工作,但不能讓他們一起打好。理想情況下,我會讓Gradle首先查看本地目錄,然後在Maven存儲庫中查看。
當前設置
我在build.gradle
定義的存儲庫這樣的:
repositories {
flatDir dirs: "${rootProject.projectDir}/libs"
flatDir dirs: "${rootProject.projectDir}/test.libs"
maven {
credentials {
username nexus_username
password nexus_password
}
url "http://nexus-server/nexus/content/groups/public"
}
}
在libs
(和test.libs
)目錄,jar文件名可能會或可能不會有版本(但是當使用flatDir
存儲庫時,我認爲這是無關緊要的):
libs\activation.jar
libs\imap.jar
....
libs\<closed_source_framework>.jar
....
libs\gson-2.2.4.jar
libs\stax-utils.jar
.....
我無法使用本地Nexus服務器的原因是因爲<closed_source_framework>.jar
; libs
文件夾中的大多數依賴項都與該分發包打包在一起,我無法可靠地獲取版本信息以將其從Nexus中提取出來。現在
,其他球隊的一個發佈自己的罐子Nexus的服務器,我想能夠獲得Nexus拉他們的罐子,所以我有(再次)在我build.gradle
定義我的依賴關係:
dependencies {
// Grab other-team jar files from Nexus server
compile "other-team-group:other-team-jar-1:version"
compile "other-team-group:other-team-jar-2:version"
compile "other-team-group:other-team-jar-3:version"
// Grab everything else from 'flatDir'
compile name: 'activation'
compile name: 'imap'
...
compile name: 'gson-2.2.4'
compile name: 'stax-utils'
.....
}
的問題
所以現在談到我的問題。我曾預計Gradle會按照我的build.gradle
中指定的順序搜索repositories
;這意味着它會首先查找當地的libs
文件夾,然後轉到Nexus,如果它無法在本地找到它。我看到的是,Gradle正在查看Nexus服務器,查找當地libs
文件夾中的jar文件。顯然,這會減慢我的構建(我已定義了約30個依賴關係)。
一些信息
輸出gradle properties
命令,以顯示存儲庫的信息:
.....
repositories: [org.gradle.api.internal.ar[email protected]18814b1b, org.gradle.api.internal.[email protected]6dff028]
.....
輸出gradle --info compileJava
,表明搖籃正在做一個查找到的Nexus:
.....
// Successfully find the other team jar files in Nexus, this is okay
Download http://nexus-server/nexus/content/groups/public/other-team-group/other-team-jar-1/version/other-team-jar-1-version.pom
Download http://nexus-server/nexus/content/groups/public/other-team-group/other-team-jar-2/version/other-team-jar-2-version.pom
Download http://nexus-server/nexus/content/groups/public/other-team-group/other-team-jar-3/version/other-team-jar-3-version.pom
.....
// Continues looking in Nexus for jar files that should be found in local libs folder
Resource missing. [HTTP GET: http://nexus-server/nexus/content/groups/public//activation//activation-.pom]
Resource missing. [HTTP HEAD: http://nexus-server/nexus/content/groups/public//activation//activation-.jar]
Resource missing. [HTTP GET: http://nexus-server/nexus/content/groups/public///imap//imap-.pom]
Resource missing. [HTTP HEAD: http://nexus-server/nexus/content/groups/public//imap//imap-.jar]
.....
底線
如何讓Gradle停止查看Maven存儲庫中的jar文件,我知道它只能在本地找到?