【问题标题】:Parent POM with Multiple - Multiple Modules having dependency具有多个的父 POM - 具有依赖关系的多个模块
【发布时间】:2017-06-30 19:25:18
【问题描述】:

我们在 CVS 中有一个相对扁平的项目结构,在迁移到 Git 后,由于 Git 存储库的签出方式,我们遇到了一个问题。 CVS 存储库永远不会被检出,但使用 Eclipse 上的 Git,我们会看到一个项目被检出的存储库文件夹。这导致我们的 Maven 脚本出现问题。

新的结构是:

我在idmlleancore 下添加了pom.xml 文件,它们引用了父pom.xml。下面的项目idml 指的是中间idmlpom.xmlleancore 指的是中间leancorepom.xml

  1. 如何定义 2 Multiple Modules 项目之间的依赖关系?
  2. 父 POM 中会加入什么来支持这种结构?
  3. AdjHubCore 如何引用idml - idmlj2eert 中的依赖项?
  4. 我们希望从根父 pom.xml 文件构建所有模块和 war 文件。

【问题讨论】:

  • 两个多模块项目之间的依赖关系”到底是什么意思?聚合器(多模块)项目不能是依赖项(因为它们有<packaging>pom 而不是jar)。基本上,子模块项目是普通的 Maven 项目,可以被视为独立存在。您的描述在“dependencyonidmlj2eert”和“dependencyinidml - idmlj2eert”中有所不同。是哪个?
  • AdjHubCore 依赖于 idmlj2eert

标签: maven-3


【解决方案1】:

你的 idmlj2eert POM 看起来像:

  ...
  <groupId>idml</groupId>
  <artifactId>idmlj2eert<artifactId>
  <version>0.0.1-SNAPSHOT<>version>
  ...

那么你的 AdjHubCore 看起来像:

    ...
    <dependency>
      <groupId>idml</groupId>
      <artifactId>idmlj2eert<artifactId>
      <version>0.0.1-SNAPSHOT<>version>
    </dependency>
   ...

另一种方法是在根 POM 中使用 &lt;dependencyManagement&gt;,这样就不必在子 POM 中声明依赖项的版本。你的根 POM 必须是 &lt;parent&gt; POM,直接或跨多个级别传递,然后是这样的子 POM。

所以,这与任何其他依赖项没有什么不同。 Maven Reactor 在构建开始时根据多模块项目内的(内部)依赖关系处理正确的构建顺序。

请记住,聚合(多模块)和继承(父/子关系)是不同的东西。一个项目可以使用其中任何一个,也可以同时使用两者。请参阅POM Reference, Inheritance v. AggregationMaven: The Complete Reference, 3.6.2. Multi-module vs. Inheritance

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 2018-01-09
    • 2020-05-05
    • 2016-05-03
    • 2018-07-23
    相关资源
    最近更新 更多