Maven:为什么它需要`mvn initialize`的依赖模块'.jars?

时间:2011-02-04 23:52:12

标签: module dependencies maven

我有一个基于Maven的项目,包含模块,比如说,

root
  modA
  modB

现在modB取决于modA。 我跑的时候

mvn initialize help:effective-pom

失败,因为modB想要modA.jar。我的问题是,

为什么需要jar?所需的所有信息都应该在pom.xml中,该模块中提供了该文件。

谁想要尝试,请查看,例如Hibernate Core 3.3.2。

谢谢, Ondra

2 个答案:

答案 0 :(得分:2)

在多模块项目上本地尝试了这一点,并看到maven不需要initializehelp:effective-pom的依赖模块.jars。

看起来你的pom中可能有一些插件配置导致这种情况。您可以查看,如果是,请使用相关的pom片段更新您的问题吗?

答案 1 :(得分:0)

在处理多模块项目时,您需要实际使用install目标将pom文件(和工件)放入本地存储库。在根pom上运行mvn initialize基本上会导致maven对你的modA和modB项目执行以下操作

mvn initialize -f modA/pom.xml
mvn initialize -f modB/pom.xml

如果你使用install,它将在modB开始之前在modA上运行install,从而确保所有modA的工件(包括它的pom)都在你的本地仓库中。当modB运行时,它将从本地存储库中获取这些工件,包括modA的pom。 Maven不够“聪明”,只知道因为它们在同一个多模块项目中而相对于modB来寻找modA的pom.xml。因此,为什么必须首先使用install目标安装工件。