2013-10-24 222 views
1

我正在使用gradle,尽管我一直在使用exclude成功删除传递依赖关系,但我不想要,我似乎无法解决如何解决以下问题。从依赖关系中排除依赖关系

假设我有以下的依存关系:

org.library:useful:2.0.0 
+--org.library:logging:1.5 
+--org.another-library:tools:1.9 
    +--org.library:logging:1.4 

正如你可以看到我有记录1.5和1.4日志之间的版本冲突。在我的配置我知道,我可以用排除做到以下几点:

config('org.library:useful:2.0.0') { 
    exclude(group: 'org.library', module: 'logging') 
} 

但我怎么说“exclude logging 1.4"这并非来自什么,我依赖(在这个例子中它来自org.another-library:tools:1.9

?与事实打交道,你可能有依赖性冲突,你想它总是解析到一个特定版本的

回答

0

一种方法是使用分辨率战略,迫使:

configurations.all { 
    resolutionStrategy { 
    force 'org.library:logging:1.5' 
    } 
} 

而且,请注意,在你的榜样, 1.4将被排除在anywa之外y默认为Gradle,如果有version conflict,则选择最高版本。

+0

感谢@erdi,为了您的评论,我正在切换到使用failOnVersionConflict(),这会导致构建在这种情况下失败。 – imrichardcole