13

我对 Maven 很陌生,现在正在尝试设置我的第一个项目树。我正在努力理解两种选择之间的区别:

我有要捆绑的 jar 和 war 项目(每个两个)。传统上,我只是创建一个包含所有四个作为依赖项的 ear 项目。

现在我读到了 poms 的聚合,但不知道该怎么做(参见http://maven.apache.org/pom.html#Aggregation)。我应该创建一个包含四个项目的聚合 POM 吗?

我想基本上我的问题是:如果依赖项是我“自己的”项目之一,那么模块和依赖项之间的最大区别是什么。

4

1 回答 1

11

模块只是组织事物的一种方式。

在多模块构建中,您可以一步构建整个工件树(记住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

因此,模块消除了独立构建多个项目的工作,但您仍然需要自己管理依赖项。

于 2010-07-27T12:56:27.160 回答