Maven多模块项目找不到兄弟模块
我似乎无法让Maven在多模块项目中找到兄弟模块。
我在所有模块中运行mvn clean install
。
这是设置:
Product +-- MagniCompCommon +-- Model
Model
项目将MagniCompCommon
作为依赖项。 当我在Model
运行mvn clean compile
时,我得到:
[INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Model 1.0 [INFO] ------------------------------------------------------------------------ [WARNING] The POM for com.magnicomp:MagniCompCommon:jar:1.0 is missing, no dependency information available [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.585 s [INFO] Finished at: 2015-10-14T10:09:04-07:00 [INFO] Final Memory: 5M/15M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal on project Model: Could not resolve dependencies for project com.magnicomp:Model:jar:1.0: Failure to find com.magnicomp:MagniCompCommon:jar:1.0 in http://download.java.net/maven/2/ was cached in the local repository, resolution will not be reattempted until the update interval of Java.Net has elapsed or updates are forced -> [Help 1]
如您所见,Maven正在尝试在java.net repo中找到MagniCompCommon
(这是父( Product
) pom.xml
的第一个存储库条目)。
这是Product pom.xml
:
4.0.0 com.magnicomp Product 1.0 pom MagniCompCommon Model Common Agent Doc ... snip ... Java.Net http://download.java.net/maven/2/
这是MagniCompCommon pom.xml
4.0.0 com.magnicomp Product 1.0 <!-- com.magnicomp.common --> MagniCompCommon jar
这是Model pom.xml
4.0.0 com.magnicomp Product 1.0 Model jar com.magnicomp MagniCompCommon 1.0
在构建多模块Maven项目时,需要从根POM运行Maven命令。 这意味着您需要在Product
的pom.xml
上运行mvn clean install
。
您将获得错误:您只构建Model
。 在Model
的POM中,Maven看到MagniCompCommon
存在依赖关系,因此它试图寻找这种依赖关系。 首先,它在你的本地MagniCompCommon
进行搜索:由于之前没有安装MagniCompCommon
,因此无法在那里找到它。 结果,它在预定义的远程存储库中查找它(并且也找不到它)。
您可以通过首先在MagniCompCommon
的POM上运行mvn clean install
然后在Model
POM MagniCompCommon
避免这种情况,但是通过直接在根POM上调用Maven可以更轻松地完成此操作。 它将以正确的顺序正确构建每个模块(因为Model
依赖于MagniCompCommon
,它将首先构建MagniCompCommon
, 然后构建Model
)。
作为旁注,您可以删除行
因为这是默认值。
我注意到MagniCompCommon pom没有指定版本
MagniCompCommon jar
在Product pom中,您引用的是1.0版本
com.magnicomp MagniCompCommon 1.0
您是否尝试在MagniCompCommon pom中指定版本1.0 ?