这就是项目的样子:
moduleA
- pom.xml
moduleB
- pom.xml
moduleA依赖于moduleB。我在父pom.xml中设置了<modules>
,并在子pom.xmls中设置了其他配置。我可以在父目录中运行mvn package
,但每次在moduleA目录中运行mvn package
都会失败。
我知道在父目录中运行mvn package -pl moduleA
可以解决问题。由于Apache Flume允许我在自己的目录中编译任何单个模块,为什么我的项目不能用?
答案 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来解决该问题。