2016-07-05 41 views
2
dependencies { 
    test "com.test:testA:[email protected]" 
    test "com.test:testB:[email protected]" 
} 


task('collectArtifacts', type: Copy) { 
    from project.configurations.test 
    into 'artifacts/' 
} 

假設神器種皮缺失和TESTB可搖籃:如何忽略未能解決一個特定的依賴

當我使用./gradlew collectArtifacts它顯然笙歌說 「>找不到融爲一體。測試:種皮:1.0" 。

如何請問gradle這個到:

  • 如果種皮可一切都很好,gradle這個下載都種皮和TESTB
  • 如果種皮不可我想gradle這個忽略了種皮依賴解析故障,繼續下載testB。
+0

根據您使用的二進制存儲庫產品,您可以調用其RESTful API來確定是否存在依存關係。 –

回答

4

或許有點直覺相反,你可以結合使用getResolvedConfiguration()getLenientConfiguration()檢索如果一些引用是不能解決的,不失敗的配置。

task('collectArtifacts', type: Copy) { 
    from project.configurations.test.resolvedConfiguration.lenientConfiguration.getFiles(Specs.satisfyAll()) 
    into 'artifacts/' 
} 

請參閱documentation

+0

這給了我 - 引起:groovy.lang.MissingPropertyException:沒有這樣的屬性:文件的類:org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingArtifactDependencyResolver $ ErrorHandlingLenientConfiguration。 但是,稍微修改對我有效: 'project.configurations.test.resolvedConfiguration.lenientConfiguration.getFiles(Specs.satisfyAll())' – xask

+0

啊,對,'文件'不是屬性。編輯答案包括這一點。如果它解決了您的問題,請將答案標記爲已接受。 – majk

1

您可以嘗試以下操作。不知道test究竟是什麼,所以我假設它是testCompile的拼寫錯誤。

task('collectArtifacts', type: Copy) { 
    from project.configurations.testCompile.findAll { it.exists() } 
    into 'artifacts/' 
} 
+0

'測試'這裏是一個配置名稱,只是一個名稱,它不是測試編輯錯誤 我仍然得到這個相同的錯誤 – xask