如何在多模块maven项目中编译其中的单个模块?

时间:2015-01-21 13:03:18

标签: java maven

这就是项目的样子:

  • moduleA

    - pom.xml

  • moduleB

    - pom.xml

  • 的pom.xml

moduleA依赖于moduleB。我在父pom.xml中设置了<modules>,并在子pom.xmls中设置了其他配置。我可以在父目录中运行mvn package,但每次在moduleA目录中运行mvn package都会失败。

我知道在父目录中运行mvn package -pl moduleA可以解决问题。由于Apache Flume允许我在自己的目录中编译任何单个模块,为什么我的项目不能用?

2 个答案:

答案 0 :(得分:1)

而不是启动目标“包”,在根pom(或只是moduleB)上启动目标“install”。这将把moduleB放在本地存储库(〜/ .m2 / repository)中,当它只编译moduleA时,Maven将能够获取它。然后你就可以只编译moduleA。

答案 1 :(得分:0)

我遇到了这个问题: maven会话未声明顶级项目

当我尝试通过命令行运行一个模块:-mvn clean install -pl moduleA时,它正在寻找父模块,因此,我尝试了此操作,并与:-mvn clean install -pl .,moduleA一起使用在这种情况下,您可以尝试假设已经在Maven存储库中建立了依赖关系并可以使用它,否则mvn clean install -pl .,moduleA --also-make应该可以工作。这将在多模块Maven项目和我们指定的“。”中仅构建一个特定项目。它将建立父pom来解决该问题。