有没有一种方法可以禁止依赖Maven中的某些工件?

有没有一种方法可以禁止依赖Maven中的某些工件?,maven,maven-2,Maven,Maven 2,我对junit的maven工件有一个问题。它与hamcrest一起打包,但我喜欢使用hamcrest的更高版本,因此我的项目需要使用junit dep并排除hamcrest依赖项 我有一个带有DependencyManager部分的父pom.xml,用于处理我想要的junit dep版本,并确保排除hamcrest。然而,我经常遇到一个问题,其他一些测试库包含对junit的可传递依赖 请注意,问题不在于版本号。这是一个特殊的人工制品。我不想要junit,我想要junit-dep。在我的Depen

我对junit的maven工件有一个问题。它与hamcrest一起打包,但我喜欢使用hamcrest的更高版本,因此我的项目需要使用junit dep并排除hamcrest依赖项

我有一个带有DependencyManager部分的父pom.xml,用于处理我想要的junit dep版本,并确保排除hamcrest。然而,我经常遇到一个问题,其他一些测试库包含对junit的可传递依赖


请注意,问题不在于版本号。这是一个特殊的人工制品。我不想要junit,我想要junit-dep。在我的DependencyManager(或其他任何地方)中,是否有任何方式可以说我根本不想包含任何版本的junit?

不幸的是,在dependency management中没有全局排除选项

另一方面,如果您不想让JUnit jar包含在内,您可以使用与
commons-logging-99.0-not-exist.jar相同的技巧

下面是描述技巧的链接->


就我个人而言,我发现使用
标签更容易完成这项工作。

太糟糕了。我正在使用排除,以防止它作为我已经知道的JAR上的可传递依赖项引入,但我发现我的团队中的其他人会重新发现它(或者更糟的是,只需在new pom.xml中保留默认的junit 3.8.1依赖项)。@jhericks。我强烈建议创建一个父级超级POM,其中包含一个大的
部分,其中所有依赖性问题都得到解决,并使您的所有项目都继承自该POM。如果这样做,在
部分中,您应该只列出无版本依赖项。这样,您就知道您的所有依赖关系都在一个中心位置进行了说明。如果您错误地在父超级POM中列出了一个没有版本的依赖项,那么maven会发现它并抱怨。