2017-12-21 9 views
0

Unterstützt Gradle Komma in Version, um mehrere Bereiche anzugeben?Unterstützt Grauta Komma in der Version, um mehrere Bereiche anzugeben?

Like:

dependencies { 
    compile 'org.webjars.npm:minimatch:2.+,3.+' 
} 

oder:

compile 'org.webjars.npm:minimatch:[2,3),[3,4)' 

It is allowed in Maven:

(, 1,0], [1,2,) x < = 1,0 oder x> = 1,2. Mehrere Sätze sind durch Kommata getrennte

(1,1), (1,1) Dies schließt 1.1 wenn bekannt ist, nicht mit dieser Bibliothek

Denn in Kombination zu arbeiten:

dependencies { 
    compile(group: 'org.webjars.npm', name: 'glob', version: '5.0.15') { 
} 

es scheiterte:

Execution failed for task ':dump'. 
> Could not resolve all files for configuration ':runtime'. 
    > Could not find org.webjars.npm:minimatch:[2,3),[3,4). 
    Searched in the following locations: 
    https://repo1.maven.org/maven2/org/webjars/npm/minimatch/[2,3),[3,4)/minimatch-[2,3),[3,4).pom 
    https://repo1.maven.org/maven2/org/webjars/npm/minimatch/[2,3),[3,4)/minimatch-[2,3),[3,4).jar 
    https://jcenter.bintray.com/org/webjars/npm/minimatch/[2,3),[3,4)/minimatch-[2,3),[3,4).pom 
    https://jcenter.bintray.com/org/webjars/npm/minimatch/[2,3),[3,4)/minimatch-[2,3),[3,4).jar 
Required by: 
    project : > org.webjars.npm:glob:5.0.15 

Antwort

1

Ich nicht th Tinte Gradle unterstützt noch solche mehrere Versionsbereiche, aber einzelne Bereiche. Sie sollten im Issue Tracker suchen, ob dies bereits gemeldet wurde, und ein neues Problem öffnen, falls dies nicht der Fall ist, damit es eventuell behoben wird.

Um das Problem zu beheben, können Sie entweder eine neuere Version dieser Bibliothek verwenden, in der neuesten Version verwendet es nicht mehrere Bereiche, sondern nur einzelne Bereiche.
Alternativ können Sie entweder die transitive Abhängigkeit ausschließen und selbst eine Version einschließen oder eine Abhängigkeitsauflösungsregel schreiben, die eine bestimmte Version für diesen Bereich auswählt.

Ein von diesen sollte helfen würde ich sagen, wenn Sie immer noch die alte Version von glob verwenden möchten.

dependencies { 
    compile(group: 'org.webjars.npm', name: 'glob', version: '5.0.15') { 
     exclude group: 'org.webjars.npm', module: 'minimatch' 
    } 
    runtime 'org.webjars.npm:minimatch:3.+' 
} 

configurations.all { 
    resolutionStrategy.dependencySubstitution { 
     substitute module("org.webjars.npm:minimatch") with module("org.webjars.npm:minimatch:3.0.4") 
    } 
} 

configurations.all { 
    resolutionStrategy.eachDependency { 
     if ((it.requested.group == 'org.webjars.npm') && (it.requested.name == 'minimatch')) { 
      it.useTarget group: it.requested.group, name: it.requested.name, version: '3.0.4' 
     } 
    } 
} 
+1

https://github.com/gradle/gradle/issues/3869 - * Transitive Abhängigkeit für Liste der Versionsbereiche bricht Build * – gavenkoa

0

Gradle Ivy verwendet Abhängigkeiten aufzulösen:

at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.RepositoryChainComponentMetaDataResolver.resolveModule(RepositoryChainComponentMetaDataResolver.java:105) 

und Ivy nicht Versionsliste unterstützen, zumindest kann ich keine Beispiele in docs finden:

Ich reparierte Problem wie üblich:

dependencies { 
    compile(group: 'org.webjars.npm', name: 'glob', version: '5.0.15') { 
     exclude module: 'minimatch' 
    } 
    compile 'org.webjars.npm:minimatch:3.0.4' 
} 
+1

Gradle tut ** ** nicht für Abhängigkeitsauflösung verwenden Ivy. Es unterstützt einige der Ivy-Syntax und es unterstützt Ivy-Repositories, aber es hat eine vollständige eigene Abhängigkeitsauflösungsmechanismus.Es ist richtig, dass Gradle derzeit keine multiplen Bereiche unterstützt, und die vorgeschlagene Auflösung ist eine Möglichkeit, sie zu lösen, aber die Ivy-Dokumentation ist hier nicht angebracht und die Aussage, dass Ivy zur Auflösung von Abhängigkeiten verwendet wird, ist schlichtweg falsch. :-) – Vampire

Verwandte Themen