2017-10-08 55 views
1

如何將模塊的所有依賴jar保存到目錄?我有一個在IntelliJ IDEA中運行的應用程序,但我想在另一臺計算機上運行它,所以我需要將所有JAR文件複製到那裏。將Gradle依賴關係保存到目錄

回答

1

首先,請考慮使用Gradle(或Gradle Wrapper)來執行諸如在另一臺計算機上獲取/下載項目依賴關係等操作。當您運行

task copyDependencies(type: Copy) { 
    from configurations.runtime 
    into "lib" 
} 

:但是如果你需要複製依賴任何其他原因,你可以定義類似於任務

gradle copyDependencies 

運行時依賴將被複制到一個文件夾lib/

的build.gradle

apply plugin: 'groovy' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'org.codehaus.groovy:groovy-all:2.3.11' 
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.9.1' 
    compile group: 'com.h2database', name: 'h2', version: '1.4.196' 

    testCompile group: 'org.spockframework', name: 'spock-core', version: '1.1-groovy-2.4' 

} 
task copyDependencies(type: Copy) { 
    from configurations.runtime 
    into "lib" 
} 

命令:

gradle copyDependencies 

而且lib/目錄包含:

lib 
├── groovy-all-2.3.11.jar 
├── h2-1.4.196.jar 
└── jackson-core-2.9.1.jar 

使用Gradle Wrapper

正如我前面提到的,請考慮使用Gradle Wrapper,因此您不必擔心在另一臺計算機上是否安裝了Gradle分發版。如前所述​​你可以輕鬆地添加搖籃包裝,然後你可以通過使用包裝,而不是你的操作系統上安裝運行搖籃

./gradlew [task] 

。在你的情況下運行

./gradlew build 

將下載所有依賴關係並構建項目。它比手動複製依賴關係要好得多,Gradle是爲了我們而發明的。

+0

首先,答案非常好。但我真的不明白爲什麼人們會繼續使用像$ {project.projectDir}/lib'這樣複雜的路徑。任何Gradle任務的默認功能都會解釋相對於項目目錄的路徑,所以'lib'就足夠了。 –

+0

@ lu.koerfer你是對的,感謝您的輸入!示例已更新。 –

+0

另外,爲什麼IT依賴'build'? – Opal