我有两个maven项目: 项目的API 项目IMPL
project-impl的POM指定了对project-api的依赖。顶级聚合pom列出了模块project-api和project-impl。
如果我在顶级运行编译,依赖项会正确解析。如果我在project-impl上运行compile,那么就找不到依赖项目-api。我如何设置maven,以便在project-impl编译时,它首先编译并收集其对其他项目的依赖?
答案 0 :(得分:6)
你只能从根项目中做到这一点
mvn -pl child -am
这将构建您的子项目以及同一树中的所有依赖项。一般来说,当你有一个多模块项目时,你应该始终从父项构建,而不是从子项构建。如果您只想构建一个或两个子项目,请执行以下操作:
mvn -pl child
OR
mvn -pl child2,child3
(项目child2和child3是构建的,但是child1和child4不是)
答案 1 :(得分:1)
你需要在impl模块的POM中依赖api。
当您在顶层项目上进行编译时,反应堆将找出构建东西的正确顺序。
要单独构建project-impl,首先必须'mvn install'project-api模块,否则它将找不到正确的依赖项。
如果您在一个团队中工作,那么将工件推送到中央存储库的自动构建服务器可以帮助减轻这里的痛苦,因为这可能会让您疯狂。
这一切都很有效,但是“maven”方式起作用,并不总是像我们人类那样做。