【问题标题】:How to make existing maven parent project, child of newly created maven project如何制作现有的maven父项目,新创建的maven项目的子项目
【发布时间】:2018-10-02 22:06:06
【问题描述】:

我有现有的 maven 项目(命名为 projectB),它是其他项目(projectC 和 projectD)的 parent,我想做 projectB 作为新创建的 maven Project 的子项(命名为 projectA)。这是目录结构:

projectA
  -> pom.xml
projectB
  -> pom.xml
projectC
  -> pom.xml
projectD
  -> pom.xml

这就是我的 projectApom.xml 的样子:

<modules>
    <module>projectB</module>
</modules>

这是我的pom.xml projectB 看起来:

    <parent>
        <groupId>(groupId of projectA)</groupId>
        <artifactId>projectA</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modules>
        <module>../projectC</module>
        <module>../projectD</module>
    </modules>

但是当我在 projectA 上执行 make clean 时,它给了我错误:

C:\Users\projectA\pom.xml 的子模块 C:\Users\projectB 不存在

我已经搜索了现有的解决方案,但没有一个可以帮助我解决问题。

【问题讨论】:

  • 能否也添加项目 C 的 POM 的 parent 部分?它是否包含relativePath 元素?

标签: java maven maven-3 parent-child parent-pom


【解决方案1】:

由于您的所有项目都处于同一级别,因此您应该:

在项目 A 中:

<modules>
    <module>../projectB</module>
</modules>

在项目 B 中:

<parent>
    ...
    <relativePath>../projectA/pom.xml</relativePath>
</parent>

【讨论】:

  • 我改变了这一点:它给出了错误,表明模块试图在 projectA 中找到 ProjectB。 Child module C:\Users\projectB\..\projectA of C:\Users\projectA\pom.xml does not exist
  • @Rajjat​​Dadwal 你确定这个错误信息是正确的吗?没有错别字?毫无意义,您的项目 A 是其自身的子模块。也许最好显示真正的错误信息。
【解决方案2】:

项目B的pom.xml中的以下配置不正确

  <parent>
    <groupId>(groupId of projectB)</groupId>
    <artifactId>projectB</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>

在父部分中,您必须指定项目 A 而不是 B。下面的内容应该会有所帮助

  <parent>
    <groupId>(groupId of projectA)</groupId>
    <artifactId>projectA</artifactId>
    <version>(Project A version)</version>
</parent>

【讨论】:

  • @sumit 请再次阅读问题。父pom文件怎么会有parent标签?
  • @Rajjat​​Dadwal 你是说 B 也是 A 的孩子(尽管它也是 C 和 D 的父母)?在这种情况下,您必须在 B 的 pom.xml 中指定其子项(或模块)和父项。如果我在这里遗漏了什么,请告诉我。
  • @RameshKumar:项目 B 是项目 C 的父 POM,也是项目 A 的子 POM,所以 sumit singh 是对的,项目 B 的 POM 需要一个 parent 部分来引用项目 A 的 POM。跨度>
  • @sumitsingh 抱歉,我已经编辑过了。实际上在我的真实代码中它是正确的。我只是在帖子中犯了错误。它仍然给出同样的错误。
  • @Rajjat​​Dadwal 所以你能不能至少删除我的回答的downvote
猜你喜欢
  • 1970-01-01
  • 2023-03-04
  • 2010-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-23
  • 2013-06-19
  • 2020-05-30
相关资源
最近更新 更多