2015-11-25 19 views
7

这不是重复的,因为这些其他解决方案不起作用。如何排除从其他子项目引入的依赖关系?

我有一个子项目:

:公地:小部件

gradle.build(子项目)类似于此:

configurations {providedCompile} 

dependencies { 
    compile project(":commons:other-widget") 
...other dependencies... 
} 

如果显示的依赖关系:

+--- project :commons:some-other-project 
    +--- project :commons:exclude-me-project (*) 
    \--- org.apache.cxf:cxf-rt-frontend-jaxrs: -> 3.0.3 (*) 

什么不起作用:

任何常用语法。我试过了我能想到的所有变化。甚至去寻找API,但无法找到我需要的。

在这个项目的依赖部分: ...

compile project(":commons:some-other-project") { 
exclude (":commons:exclude-me-project") 
} 

结果:

Could not find method exclude() for arguments [:commons:some-other-project] on project 

我也试过:

compile (project (':commons:some-other-project')) { 
    transitive = false 
} 

结果:除删除的依赖“:commons:some-other-project”,它删除了“:commons:some-other-project”。

我有一个大而复杂的项目进行转换。我有很多这样的工作在我面前。如果将项目视为依赖项,我该如何排除它?

+0

你试过'排除(“groupID:ModuleID”)'? – RaGe

+1

或者'transitive = false' – RaGe

+0

Re:transitive = false如果你想排除一切事情,那么在子项目和尝试重用东西方面没什么意义。我需要特定的东西。 – user447607

回答

11

exclude依赖关系有一点点的另一种语法,所以尽量做到提供模块名称,这是相当于到exclude-me-project的名称,如:

compile(project(":commons:some-other-project")) { 
    exclude module: "exclude-me-project" 
} 

或者,您可以排除所有的传递依赖为commons项目,但它会删除some-other-project项目的所有DEPS,包括exclude-me-project

compile(project(":commons:some-other-project")) { 
    transitive = false 
} 
+0

已经尝试排除模块,但会仔细检查确定。它可能没有在适当的情况下。 transitive = false不是很具体。就像用核武器扑灭蚊子一样。 – user447607

+1

@ user447607只是不要忘了在'('和')'中放置一个'project',因为它已经在答案中完成了。不是'compile project(“:commons:some-other-project”)'',而是'compile(project(“:commons:some-other-project”))''。我已经测试过它,但有一点点另一个项目结构 – Stanislav

0

您可以重命名文件.TXT(重构 - 重命名文件)

相关问题