我有一个基于Maven的项目,包含模块,比如说,
root
modA
modB
现在modB
取决于modA
。
我跑的时候
mvn initialize help:effective-pom
失败,因为modB
想要modA.jar
。我的问题是,
为什么需要jar?所需的所有信息都应该在pom.xml中,该模块中提供了该文件。
谁想要尝试,请查看,例如Hibernate Core 3.3.2。
谢谢, Ondra
答案 0 :(得分:2)
在多模块项目上本地尝试了这一点,并看到maven不需要initialize
或help: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
目标安装工件。