为什么Maven不在多模块项目中安装依赖项?

时间:2016-08-13 08:31:51

标签: java maven

我的项目结构(多模块)就像这样

parent
    projectA
    projectB
    ... other modules

parent实际上也有一个父(Spring Boot)。

我已经设置了一个Jenkins工作来编译&测试每次提交,所以运行:

mvn -f pom.xml clean install

一切正常。 ProjectB取决于ProjectA(类似于常见的类项目),并且是一个Spring启动应用程序。所以依赖信息是常规的:

<dependency>
        <groupId>Group</groupId>
        <artifactId>ProjectA</artifactId>
        <version>1.0-SNAPSHOT</version>
</dependency>

ProjectB在Jenkins中有一个单独的工作来构建可部署的jar文件并将其部署到服务器。所以那里的命令是:

mvn -f ProjectB/pom.xml clean install antrun:run

此操作失败并显示如下消息:

[WARNING] The POM for Group:ProjectB:1.0-SNAPSHOT is missing, no dependency information available
...
[ERROR] Failed to execute goal on project host-api: Could not resolve dependencies for project Group:ProjectB:1.0-SNAPSHOT: The following artifacts could not be resolved: Group:ProjectA:jar:1.0-SNAPSHOT...

现在我可以通过在mvn install目录中执行ProjectA来解决此问题 - 我已经对此进行了测试,但它确实解决了这个问题。

但我的问题是我为什么要?不应该认为Maven应该在本地仓库中安装jar吗?

提前致谢

2 个答案:

答案 0 :(得分:0)

运行构建时指定依赖项构建部件:

Guide to Working with Multiple Modules

答案 1 :(得分:0)

所以我认为规则是,首先建立父项目,然后在子项目上运行目标。

我的修复是首先在父项目上运行clean install,然后在Jenkins中运行-f ProjectB/pom.xml antrun:run

的第二个构建配置