2010-06-03 122 views
5

我有两个Maven项目: 项目-API 项目IMPL国米项目依赖Maven中

项目IMPL的POM规定了项目API的依赖。顶级聚合pom列出了模块project-api和project-impl。

如果我在顶层运行编译,依赖关系可以正确解析。如果我在project-impl上运行compile,那么它找不到依赖项目api。我如何设置maven以便在project-impl编译时首先编译并收集其对其他项目的依赖关系?

回答

6

你只能做的是从根项目

mvn -pl child -am 

这将建立自己的子项目,并在同一棵树也都依赖。一般来说,当你有一个多模块项目时,你应该始终从父项目构建,而不是从子项目构建。如果你只是想建立一个或两个孩子的项目,这样做:

mvn -pl child 

OR

mvn -pl child2,child3 

(项目的child2和child3是建立,但child1和child4都没有)

+1

+1反应堆高级选项是要走的路线 – 2010-06-04 14:02:55

+0

mvn-pl-am作品。 – 2010-06-04 18:48:06

1

您需要依赖于impl模块的POM中的api。

当你在顶层项目上编译时,reactor会找出构建东西的正确顺序。

要单独构建project-impl,必须先'mvn install'project-api模块,否则它将找不到正确的依赖关系。

如果你在一个团队中工作,一个自动构建服务器将工件推送到一个中央存储库可以帮助缓解这里的痛苦,因为这可能会导致你疯了。

这一切工作得很好,但ot工程的“maven”方式,这并不总是像我们人类会做的事情。