【问题标题】:Single or Multiple Maven pom.xml configuration files?单个或多个 Maven pom.xml 配置文件?
【发布时间】:2013-11-29 08:57:34
【问题描述】:

我想问这些关于Maven项目中pom.xml文件的问题。

  • 有什么理由让所有依赖库拥有多个 pom.xml,而不是在一个 pom.xml 中拥有所有依赖?
  • 这些pom.xml 文件在Maven 项目中应该放在哪里?

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

【问题讨论】:

    标签: java xml maven pom.xml


    【解决方案1】:

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

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

    一个 maven 项目可以构建两个不同的应用程序(例如桌面和 Web 应用程序)。这个不同的应用程序有不同的依赖关系。

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

    了解更多

    【讨论】:

    • 我会深入研究这些链接。现在我有一个简单的问题 - 如果我有所有库的 pom.xml 文件,这些文件在项目中应该放在哪里?
    • Maven 有本地存储库(HOME/.m2/repository)的概念。构建项目后,会将库从本地存储库复制到您的工件。库不存储在 VCS(SVN、GIT 等)中
    • 抱歉,我的意思是这些多个 pom.xml 文件应该放在 Maven 项目中的什么位置(不是库的 jar,我知道的本地存储库的概念)。
    • 添加到答案的示例多模块项目的链接。 pom.xml 位于不同的目录中。整个项目有树状结构。
    【解决方案2】:
    • 为什么要为所有依赖库使用多个 pom.xml,而不是在一个 pom.xml 中使用所有依赖项?

    一个 Maven 项目可以由许多工件组成。一个工件可能是字符串操作库。另一个可能是使用该字符串操作库的 web 应用程序。

    这就是为什么您不应该将所有依赖项放在一个 pom 中的原因:您的字符串操作库不应该仅仅因为一个不相关的 pom 是一个 webapp 而引用 servlets.jar。 每个工件都应该只在其类路径中需要

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

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

    链接到@MariuszS,这里是the Standard Directory Layout

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

    【讨论】:

    • 对不起,英语不是我的主要语言,对我来说最好的帮助是展示一个包含多个 pom.xml 文件的示例项目,也许在 GitHub 上?我会尝试找到这样的项目并找出它的目录结构。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 2013-05-17
    • 2011-06-23
    相关资源
    最近更新 更多