Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使现有maven父项目、新创建的maven项目的子项目_Java_Maven_Maven 3_Parent Child_Parent Pom - Fatal编程技术网

Java 如何使现有maven父项目、新创建的maven项目的子项目

Java 如何使现有maven父项目、新创建的maven项目的子项目,java,maven,maven-3,parent-child,parent-pom,Java,Maven,Maven 3,Parent Child,Parent Pom,我有一个名为projectB的现有maven projectB,它是其他ProjectsprojectC和projectD的父项目,我想使projectB成为新创建的名为projectA的maven projectA的子项目。这是目录结构: projectA -> pom.xml projectB -> pom.xml projectC -> pom.xml projectD -> pom.xml 以下是projectA的pom.xml的外观: 但当我在

我有一个名为projectB的现有maven projectB,它是其他ProjectsprojectC和projectD的父项目,我想使projectB成为新创建的名为projectA的maven projectA的子项目。这是目录结构:

projectA
  -> pom.xml
projectB
  -> pom.xml
projectC
  -> pom.xml
projectD
  -> pom.xml
以下是projectA的pom.xml的外观:

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

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


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

项目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>

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

在项目A中:

<modules>
    <module>../projectB</module>
</modules>
在项目B中:

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

@苏米特请把问题再读一遍。父pom文件怎么会有父标记?@RajjatDadwal你是说B也是a的子文件,尽管它也是C和D的父文件?在这种情况下,您必须在B的pom.xml中指定其子项或模块以及父项。如果我在这里遗漏了什么,请告诉我。@RameshKumar:Project B是Project C的父项pom,但也是Project A的子项pom,因此sumit singh是对的,项目B的POM需要一个引用项目a的POM的父节。@Sumitsing抱歉,我编辑了这个。实际上,在我的真实代码中,它是正确的。我只是在邮件中犯了个错误。但它仍然给出了相同的错误。@RajjatDadwal所以你能至少删除我回答的否决票吗?我改变了这一点:它给出了错误,表明模块试图在projectA中找到ProjectB。C:\Users\projectA\pom.xml的子模块C:\Users\projectB\..\projectA不存在exist@RajjatDadwal您确定此错误消息正确吗?没有打字错误?您的项目A本身就是一个子模块,这毫无意义。也许最好是显示真正的错误消息。您是否也可以添加项目C的POM的父部分?它是否包含relativePath元素?
<modules>
    <module>../projectB</module>
</modules>
<parent>
    ...
    <relativePath>../projectA/pom.xml</relativePath>
</parent>