2015-05-19 75 views
1

我的项目有一些依赖关系(真的很多),我将它们添加到依赖项中。但我不想要任何传递依赖,这将是我无法控制的(maven带给我几乎三倍的我需要的)。我试图禁止以这种方式传递依赖:禁用传递依赖不工作

<exclusions> 
     <exclusion> 
      <groupId>*</groupId> 
      <artifactId>*</artifactId> 
     </exclusion> 
</exclusions> 

但我做了一个MVN包后,将传递依赖仍然下载并添加到我的内置包。这里是maven的日志记录:

[DEBUG] Dependencies for project:com.XXX.XXX: 
org.apache.XXX 
org.apache.XXX.YYY 
... 
[DEBUG] Resolving project dependencies transitively: 
[DEBUG] org.com.XXX.yyy 
[DEBUG] org.apache.ZZZ 
... 
[DEBUG] Adding artifact: org.apache.ZZZ with file: ${file name} to assembly location: lib/${file name}.jar 
... 

所以这不是我想要的。我希望maven不要自动下载传递依赖关系,也不要将它们添加到我的'mvn包'中。

感谢任何帮助。

+0

重复http://stackoverflow.com/questions/547805/exclude-all-transitive-dependencies-of-a-single-dependency – BadZen

+0

该答案不起作用。请仔细阅读问题描述,然后将其标记为'重复' – mattsun

+0

“对于maven 2,我建议为依赖关系创建自己的自定义pom,该依赖关系具有您的。对于需要使用该依赖关系的项目,请将依赖项设置为您的自定义而不是典型的神器。“ – BadZen

回答

0

所以这里是我的解决方案。 Maven仍然抓住了所需的传递依赖。我所做的只是在装配阶段只包括我想要的罐子。在装配的配置文件,我手动添加我想要的罐子在

<dependencyset> 
    <includes> 
     <include>com.XXX:XXX:jar:2.6.0</include> 
    </includes> 
<dependencyset> 

比较什么,我不想(传递依赖罐子几百),这是更实际的加我想要的东西。这很好地解决了这个问题。