Java 多模块构建人工分辨率与单个构建?

Java 多模块构建人工分辨率与单个构建?,java,maven,maven-3,Java,Maven,Maven 3,我在我的项目中观察到以下maven行为,这对我来说没有意义。这就是正在发生的事情的本质 假设我有一个包含两个模块的项目 com.example.foo.jar jarbar依赖于foo 两者共享一个包含maven模块的公共父项目 当我的local.m2为空,因此未安装foo和bar时 在project/目录中mvn clean验证工作正常并且构建成功 在bar/目录中mvn initialize不起作用,我收到一条错误消息,说maven无法解析bar对foo的依赖关系 那么,当我从项目文

我在我的项目中观察到以下maven行为,这对我来说没有意义。这就是正在发生的事情的本质

假设我有一个包含两个模块的项目

  • com.example.foo.jar
  • jarbar依赖于foo
  • 两者共享一个包含maven模块的公共父项目
当我的local.m2为空,因此未安装foo和bar时

  • project/
    目录中
    mvn clean验证
    工作正常并且构建成功
  • bar/
    目录中
    mvn initialize
    不起作用,我收到一条错误消息,说maven无法解析bar对foo的依赖关系
那么,当我从项目文件夹而不是从单个模块调用项目时,为什么maven可以构建项目呢

project/
  pom.xml
  foo/
    pom.xml
  bar/
    pom.xml

我试图避免这里讨论的
mvn安装
hack

您可以在reactor中构建子模块:

mvn -pl bar package -am
您还需要包含
-am
来构建
foo
,否则Maven将无处获得
foo
jar


有关更多详细信息,请参阅。

项目pom是否将foo作为版本的依赖项包含?@jtahlborn是的依赖项是显式的,因此bar在bar pom.xml中对foo具有显式依赖项,版本号设置为${project.version}包括pom中的相关部分(模块和依赖项)