2016-11-15 69 views
0

我一直在使用「sneaker-netted」一組罐子,我最終將發佈到一個Gradle友好的回購(Artifactory),但暫時必須保持本地化在我的機器上。使用Gradle從文件系統中解析罐子

我需要在Gradle項目中使用這些jar,它不僅需要能夠列出這些爲dependencies,而且還使用Eclipse插件來解決Eclipse IDE內部的依賴關係。

這些罐子都有POM,並有自己的傳遞依賴關係(所有這些都在像Maven Central和JCenter等典型的倉庫中)。

我正在尋找一種方法來將這些罐子保存在我的文件系統的某個地方,然後像解決它們一樣正常地解決它們dependencies,包括它們的傳遞依賴關係的解析,並且爲了與Gradle Eclipse插件兼容在引擎蓋下。

再次,理想的結果是:

  • 添加這些罐子從,比如說依賴,~/special-jars/*
  • 無論依賴於每一個「特殊的罐子的」 POM定義,解決這些
  • 當我運行gradle eclipse,Gradle將它們從文件系統中拉出來

這可能嗎?如果是這樣,怎麼樣?

回答

1

聽起來像你想將你的罐子存儲在本地的maven倉庫中。

本地Maven回購住在這裏默認~/.m2/repository

隨着本地倉庫的目錄結構將嚴格例如這裏GSON在我的本地

$ ls -d $PWD/* 
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2-javadoc.jar 
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2-javadoc.jar.sha1 
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2-sources.jar 
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2-sources.jar.sha1 
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2.jar 
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2.jar.sha1 
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2.pom 
/Users/some.user/.m2/repository/com/google/code/gson/gson/2.6.2/gson-2.6.2.pom.sha1 

使用這個我可以使用典型的gradle產出依賴與傳遞依賴關係。

repositories { 
    mavenLocal() 
} 
dependencies { 
    compile "com.google.code.gson:gson:2.6.2" 
} 

你可以導入通過flatdir罐子但是你將失去在POM中聲明的傳遞依賴。

+0

我想你錯過信息的重要位在目錄列表。您還應該在指定傳遞依賴關係的目錄中看到'gson-2.6.2.pom' –

+0

@Lance Java,好點我已經更新了答案以顯示完整的目錄內容,包括'pom'和'sha1'文件 – JBirdVegas

0

JBirdVegas' answer之外,您也可以使用自定義位置。例如,你可以使用一個項目子文件夾

repositories { 
    maven { 
     url file("${rootProject.projectDir}/mavenRepo") 
    } 
} 

或者

repositories { 
    maven { 
     url file("c:/path/to/repo") 
    } 
}