Java Maven war如果不是独立构建的,则包含额外的依赖项

Java Maven war如果不是独立构建的,则包含额外的依赖项,java,dependencies,maven,war,ear,Java,Dependencies,Maven,War,Ear,我有一个war,我正试图减少它的WEB-INF/lib中包含的依赖项,因为它们是由ear提供的,如果它们只在ear中,它就解决了我遇到的一些类加载器问题 如果我在war的模块中运行mvn clean install,它只构建我想要的依赖项。如果我升级到一个级别并在项目上运行mvn安装(war在这个级别上定义为pom.xml中的一个模块),那么war将被重新打包,并具有更多的依赖项 为什么行为会有所不同?我如何才能阻止所有这些额外的依赖性进入 我试着遵循这里的建议,但没有发现行为上的差异: Mav

我有一个war,我正试图减少它的WEB-INF/lib中包含的依赖项,因为它们是由ear提供的,如果它们只在ear中,它就解决了我遇到的一些类加载器问题

如果我在war的模块中运行mvn clean install,它只构建我想要的依赖项。如果我升级到一个级别并在项目上运行mvn安装(war在这个级别上定义为pom.xml中的一个模块),那么war将被重新打包,并具有更多的依赖项

为什么行为会有所不同?我如何才能阻止所有这些额外的依赖性进入

我试着遵循这里的建议,但没有发现行为上的差异:

Maven 2.0.6、Maven ear插件2.4.1、Maven war插件2.1-beta-1(我无法更改版本,我在一个封闭的网络上)。提前谢谢


ETA:在项目级别进行mvn清洁安装可以得到我想要的结果。mvn清理和mvn安装会添加我不想要的额外JAR。

运行
mvn dependency:tree
查看(可能是可传递的)依赖项的来源

为了深入了解Maven如何处理依赖关系管理,您需要阅读“Maven权威指南”(Sonatype提供的免费PDF)


请设法升级到maven 2.1.0(最好是2.2.1),最新版本的插件和早期版本都有臭名昭著的缺陷。

您的项目结构是什么样的?POM snippets?父POM.xml包含war模块和ear模块的模块标记。ear pom.xml包含一个用于war的webModule标记和一个依赖项标记。我将尝试获取PDF,谢谢。依赖关系树向我显示了所有依赖关系的完整列表,这些依赖关系几乎都标记为提供的。我想要的几个被定义为compile,其他几个被定义为test,并在构建模块时在war的lib中结束。但是,所有其他人在建设项目时都在那里。我不确定这棵树告诉了我比我知道的更多的东西。你是在ear项目级别还是在父级运行mvn dependency:tree?父级和war级别。输出看起来是一样的。在ear级别构建时会发生什么?