我對JVM World非常陌生,我發現Maven和Gradle非常非凡的工具來處理構建和依賴關係。如何處理Web託管的.jar文件作爲Gradle中的依賴項?
我需要在我的解決方案中包含兩個jar文件。它們不在任何Maven存儲庫中。我必須使用libs文件夾並在開發人員或回購中共享文件嗎?
jar文件不受我控制,我也不想經過Maven Central或類似的東西。我相信這些jar文件的URL是非常持久的。
我對JVM World非常陌生,我發現Maven和Gradle非常非凡的工具來處理構建和依賴關係。如何處理Web託管的.jar文件作爲Gradle中的依賴項?
我需要在我的解決方案中包含兩個jar文件。它們不在任何Maven存儲庫中。我必須使用libs文件夾並在開發人員或回購中共享文件嗎?
jar文件不受我控制,我也不想經過Maven Central或類似的東西。我相信這些jar文件的URL是非常持久的。
第一個解決方案
不要離開Gradle。相反,請嘗試使用文件集合。它應該工作!但不適合我,SE第二個解決方案
dependencies {
def webHostedJarFiles = ["http://url.to.jar", "http://url.to.second.jar"]
.collect{fileName->new File(fileName)}
compile([
files{webHostedJarFiles},
'commons-validator:commons-validator:1.4.1'
/* and all the other Maven dependencies...*/])
}
直接把網址中的文件的方法給你一個不能轉換URL「http://url.to.jar」到文件例外
通過某種原因,這並沒有爲工作我。這些依賴被下載並顯示在IntelliJ的gradle插件中,但編譯comilpiler時似乎無法找到它。
第二種解決方案
不要離開Gradle。而是將文件下載到libs文件夾中。
複印任務:
task downloadJarsToLibs(){
def f = new File('libs/myFile.jar')
if (!f.exists()) {
new URL('http://path.to/myFile.jar').withInputStream{ i -> f.withOutputStream{ it << i }}
}
}
依賴關係:
dependencies {
compile([
fileTree(dir: 'libs', include: ['*.jar']),
'commons-validator:commons-validator:1.4.1'
/* and all the other Maven dependencies...*/])
}
第三溶液(@RaGe的Cortesey)
實施例的文件:
http://exampe.com/uda/virtuoso/7.2/rdfproviders/jena/210/virt_jena2.jar
http://exampe.com/uda/virtuoso/7.2/jdbc/virtjdbc4.jar
的build.gradle:
repositories {
ivy {
url 'http://example.com/'
layout 'pattern', {
artifact '/uda/[organisation]/7.2/[module]/[revision].[ext]'
}
}
mavenCentral()
}
dependencies {
compile 'virtuoso:rdfproviders/jena210:virt_jena2:jar', 'virtuoso:jdbc:virtjdbc4:jar'
}
可惜,這似乎並沒有對我的設置工作,但搖籃是幸福的,需要時下載文件(因爲它們被緩存)
的替代方式做到這一點是假裝在線jar文件是一個自定義佈局ivy存儲庫。這樣做的好處是您可以使用gradle的緩存功能,因此您無需爲每個構建下載依賴項。見[我的答案在這裏](http://stackoverflow.com/questions/23023069/gradle-download-and-unzip-file-from-url/34327202#34327202) – RaGe
我試了一下,byt我無法得到它上班。你能提供一個例子嗎? – Fontanka16
我在這裏舉了一個例子:http://stackoverflow.com/a/34327202/745574 – RaGe