2016-03-23 45 views
1

我對由分類器(例如三葉草)標識的jar的特殊版本有依賴關係。我可以很容易地將它指定爲依賴項。不幸的是,在pom中指定的所有依賴關係都沒有分類器。依賴關係解析期間的Gradle更改分類器

compile(group: 'ch.mypackage', name: 'projectWithTransitiveDeps', version: "1.0.0-SNAPSHOT", classifier: 'clover') 

我想改變的傳遞依賴使用分類爲好,但有對象上二傳手:

configurations { 
    compile.resolutionStrategy { 
     eachDependency { DependencyResolveDetails details -> 
      if (details.requested.group == 'ch.mypackage') { 
       details.useTarget group: details.requested.group, name: details.requested.name, version: details.requested.version, classifier: 'clover' 
      } 
     } 
    } 
} 

上面的代碼將失敗,一個例外,因爲分類是未知屬性。

是否有另一種方法來實現這一目標?

+0

[文件](https://docs.gradle.org/current/javadoc/org/gradle/api/artifacts/DependencyResolveDetails。 html#useTarget(java.lang.Object))用於'userTarget'說*此方法可用於在解析之前更改依賴項,例如更改組,名稱或版本(或全部三個)。*這似乎意味着不支持重寫分類器。 – RaGe

+0

此外,這[文檔](https://github.com/gradle/gradle/blob/6277a4dc70fbeea83c111e75c95ba851d1e56ffc/design-docs/dependency-substitution.md#implementation)表示「DependencyResolveDetails」已被棄用,您應該使用「DependencySubstitution」。不確定這會影響哪些gradle版本。 – RaGe

回答

0

顯然userTarget需要一個字符串,以及,你可以嘗試:

details.useTarget "$details.requested.group:$details.requested.name:$details.requested.version:clover" 
+0

感謝您的建議。不幸的是它不起作用。沒有例外,但它根本不尊重分類器。 – Daniel