2017-01-03 95 views
2

是否有命令指示Gradle解析並下載所有testRuntime依賴關係,但不運行測試?是否有Gradle任務下載testRuntime依賴關係?

優選地,我想在不編寫自定義任務的情況下執行此操作(例如,可以針對任何 Gradle項目運行該命令)。

舉例來說,如果我有build.gradle這種依賴性:

dependencies { 
    // ... 
    testRuntime "org.seleniumhq.selenium:selenium-htmlunit-driver:2.47.1" 
} 

selenium-htmlunit-driver相關的JAR文件不下載,直到我跑gradle test,這也運行測試。我可以通過運行gradle testClasses下載所有其他依賴項,但不能運行testRuntime

+0

只要運行'gradle test'? – RaGe

+0

http://stackoverflow.com/questions/21814652的潛在重複。請注意,2014年有評論指出,無法預先下載依賴項。 –

回答

3

將下面的一個名爲resolve.gradle

gradle.allprojects { project -> 
    project.task('resolveTestRuntime') { 
     doLast { 
      project.configurations.testRuntime.resolve() 
     } 
    } 
} 

文件,然後運行resolve.gradleinit script

gradlew --init-script resolve.gradle resolveTestRuntime 
+0

我不認爲這是一個有效的初始化腳本。似乎'任務'是不允許的。我錯了嗎? – codefinger

+0

正確... init腳本在範圍內具有[Gradle](https://docs.gradle.org/current/javadoc/org/gradle/api/invocation/Gradle.html)實例,而build.gradle具有[項目](https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html)。 –

0

修改從Lance Java答案爲有效的初始化腳本,我可以用做到這一點以下resolve.gradle

apply plugin:MyInitPlugin 

class MyInitPlugin implements Plugin<Gradle> { 
    @Override 
    void apply(Gradle gradle) { 
    gradle.allprojects{ project -> 
     project.task('resolveTestRuntime') { 
     doLast { 
      project.configurations.testRuntime.resolve() 
     } 
     } 
    } 
    } 
} 

然後運行:

gradlew --init-script resolve.gradle resolveTestRuntime 
+0

你不需要插件...你可以使用'gradle.allprojects {...}'片段 –

+0

謝謝。如果你想用這個編輯你的答案,我會接受它。 – codefinger

相關問題