模块只是组织事物的一种方式。
在多模块构建中,您可以一步构建整个工件树(记住Joel 测试)。但是,它们中的每一个都将是一个单独的工件,可以单独引用它作为依赖项。
这是一个示例布局,括号中的包装。
root (pom)
- project1 (jar)
- project2 (war) -> references project1 as dependency
- project3 (jar)
- project4 (war) -> references project3 as dependency
- project5 (ear) -> references project2 and project4 as dependency
在根目录中调用mvn install
以构建整个树。
这里的假设是project1只被project2使用,project3只被project4使用。否则,这是一个更复杂的场景。
root (pom)
- project1 (jar)
- project2 (jar)
- project3 (war) -> references project1 and project2 as dependency of scope provided
- project4 (war) -> references project1 and project2 as dependency of scope provided
- project5 (ear) -> references project1 through project4 as dependency
因此,模块消除了独立构建多个项目的工作,但您仍然需要自己管理依赖项。