【问题标题】:Reusing maven module as dependencies重用 maven 模块作为依赖项
【发布时间】:2011-07-31 14:10:03
【问题描述】:

我希望能够将我的项目拆分为 Maven 子模块,并将它们作为其他项目的 Maven 依赖项重用。

据我了解,子模块必须指定其父项目。这使得它们不适合作为依赖项重用。

这使得模块中的拆分变得不那么有吸引力恕我直言。还是我错过了什么?

当我需要共享项目时,我倾向于将项目拆分为组件。不然,何必呢?

有人可以详细说明吗?

是否可以声明一个不指定其父级的模块? 如果不能,如何重构依赖项及其所有依赖项目?

干杯

【问题讨论】:

    标签: module maven dependencies


    【解决方案1】:

    relativePath 只是构建时的提示。安装完所有模块和父模块后,您可以在其他项目中将各个模块称为依赖项。

    【讨论】:

      【解决方案2】:

      据我从文档中了解到, 子模块必须指定它们的 父项目。这使他们 不适合作为重用 依赖关系。

      指定父项目不会使模块不适合作为依赖项。大多数模块都有一个父 pom,它定义了常见的依赖项/插件和其他东西。例如,请参阅 spring 依赖项。

      是否可以声明一个模块 没有指定它的父母?

      每个模块都是一个单独的 maven 项目。因此,它不需要父母。通常,在模块的分层组织中,每个模块都位于一个文件夹中,而父 pom 位于模块的父文件夹中。父 pom 通常会构建所有模块。

      |
      --- module 1
          |
          --- pom.xml
      |
      --- module 2
          |
          --- pom.xml
      |
      pom.xml <-- parent pom
      

      在没有父 pom 的情况下,您需要单独构建每个模块。

      也可参考this SO 讨论。

      【讨论】:

      • 父 pom 和 pom 项目很有用,毫无疑问。但是文档说您必须在模块中指定父级。所以如果你想重用,比如说一个项目的一个服务器模块用于另一个项目,你怎么做呢? ` | --- 服务器模块 | --- pom.xml --- 客户端模块`
      • @nodje。查看 spring 模块(spring-core 或 spring-web)的 pom 文件。这些模块可以在任何项目中使用,并且它们具有 parent 声明。
      【解决方案3】:

      毫无疑问,父 pom 和 pom 项目很有用。但是文档说您必须在模块中指定父级。那么如果你想重用,比如说一个项目的一个服务器模块用于另一个项目,你怎么做呢?

      |
      --- server
           |
           --- pom.xml
      |
      --- client
           |
           --- pom.xml
      |
      --- webapp
           |
           --- pom.xml
      |
      --- Pom project 1
           |
           <modules>
              <module>../server
              <module>../client
      |
      --- Pom project 2
           |
           <modules>
              <module>../server
              <module>../webapp
      

      对于上面的例子,根据文档,服务器项目应该指定 pom 项目 1 作为父项目,并且 pom 项目 2 也是如此。

      在这种情况下,你如何处理模块和依赖概念的混合?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 2016-07-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多