单个还是多个Maven pom.xml配置文件?

我想问一下与Maven项目中的pom.xml文件有关的这些问题。

  • 为所有依赖库创建多个pom.xml而不是在一个pom.xml包含所有依赖项的原因是什么?
  • Maven项目中的这些pom.xml文件应该放在哪里?

这是Spring框架的pom.xml示例 – http://search.maven.org/remotecontent?filepath=org/springframework/spring-core/3.2.5.RELEASE/spring-core-3.2.5.RELEASE。 POM

  • 为所有依赖库创建多个pom.xml而不是在一个pom.xml中包含所有依赖项的原因是什么?

maven项目可以由许多工件组成。 一个工件可能是String操作库。 另一个可能是使用该String操作库的webapp。

这就是为什么你不应该把所有的依赖项放在一个pom中:你的String操作库不应该只是因为一个不相关的pom是webapp而引用了servlets.jar。 每个工件应该只具有其类路径中所需的内容。

(您可能有兴趣了解dependencyManagement标记,但它与您的问题没有直接关系。)

  • Maven项目中的这些pom.xml文件应该放在哪里?

正如@MariuszS所链接的,这里是标准目录布局 。

在顶级文件描述项目: pom.xml文件 (以及任何属性,maven.xml或build.xml,如果使用Ant)。 此外,还有一些文本文档供用户在接收源时立即读取:README.txt,LICENSE.txt等。

这取决于你的项目,如果项目很小,这个项目(工件)的产品只有一个,那么一个pom就足够了。 但是,如果您的项目有许多工件(库,WAR,EAR等),则需要(通常)每个工件pom。

Maven概念是一个项目定义(POM)只生成一个工件(有例外)。 如果需要,每个项目都应该有pom.xml内部和源目录的单独目录。

一个maven项目可以构建两个不同的应用程序(例如桌面和webapp)。 这种不同的应用程序具有差异依赖性。

示例多模块项目结构: https : //github.com/peter-lawrey/Java-Chronicle

阅读更多

  • 标准目录布局简介
  • 使用多个模块的指南
  • Maven by Example第6章。多模块项目