2016-07-05 13 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/' 
} 

Unter der Annahme, das Artefakt testA zu lösen fehlt und TestB ist verfügbarGradle: Wie Versagen ignorieren eine bestimmte Abhängigkeit

Wenn ich ./gradlew collectArtifacts verwenden es „offensichtlich beschwert sagen> konnte nicht com finden. test: testA: 1,0 ".

Wie kann ich fragen gradle an:

  • Wenn testA verfügbar ist alles gut ist, gradle Downloads beide testA und TestB
  • Wenn testA nicht verfügbar ist, ich will gradle Auflösungsfehler für testA Abhängigkeit zu ignorieren und gehen Sie voran, um testB herunterzuladen.
+0

Abhängig von dem binären Repository-Produkt, das Sie verwenden, können Sie die RESTful-API aufrufen, um festzustellen, ob eine Abhängigkeit im Voraus besteht. –

Antwort

4

Vielleicht ein bisschen Gegen intuitiv, können Sie getResolvedConfiguration() in Kombination mit getLenientConfiguration() verwenden, um eine Konfiguration abzurufen, wenn einige der Referenzen nicht scheitern nicht auflösbar sind.

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

Siehe documentation.

+0

das gibt mir - verursacht durch: groovy.lang.MissingPropertyException: Keine solche Eigenschaft: Datei für Klasse: org.gradle.api.internal.artifacts.ivyservice.ErrorHandlingArtifactDependencyResolver $ ErrorHandlingLenientConfiguration. Aber eine kleine Änderung funktionierte für mich: 'project.configurations.test.resolvedConfiguration.lenientConfiguration.getFiles (Specs.satisfyAll())' – xask

+0

Ah, richtig, 'Dateien' ist keine Eigenschaft. Bearbeitete die Antwort, um dies zu berücksichtigen. Wenn es Ihr Problem gelöst hat, markieren Sie die Antwort als akzeptiert. – majk

1

Sie könnten Folgendes versuchen. Nicht sicher, was genau test ist, also nehme ich an, es ist ein Tippfehler für testCompile.

+0

'test' hier ist ein Konfigurationsname, nur ein Name ist kein Tippfehler für testCompile Ich bekomme immer noch den gleichen Fehler damit – xask

Verwandte Themen