Java Maven子模块不存在

Java Maven子模块不存在,java,maven,Java,Maven,我是马文的新手。我从SVN签出了一个客户的项目,其结构如下: projectName |--> pom.xml |--> jetty-wrapper |--> pom.xml |--> bin |--> pom.xml |--> projectName-common |--> pom.xml |--> bin |--> pom.xml |--> projec

我是马文的新手。我从SVN签出了一个客户的项目,其结构如下:

projectName
|--> pom.xml
|--> jetty-wrapper
     |--> pom.xml
     |--> bin
          |--> pom.xml
|--> projectName-common
     |--> pom.xml
     |--> bin
          |--> pom.xml
|--> projectName-war
     |--> bin
          |--> pom.xml
“projectName”(顶部的pom)正下方的pom.xml正在构建这三个模块

<modules>
    <module>projectName-common</module>
    <module>projectName-war</module>
    <module>jetty-wrapper</module>
</modules>
问题是:是否应该在
projectName war
的正下方有一个pom.xml,就像我的客户可能忘记提交给SVN的其他模块一样

问题是:projectName的正下方是否应该有pom.xml

简单地说,

您已经找到了诀窍,而且由于您没有向maven提供项目描述符(也称为pom.xml),它将无法将projectName war称为有效的子模块

projectName war下绝对必须有一个pom.xml文件,并且它必须有一个与声明模块的父级下的项目id相匹配的工件id,即

<artifactId>projectName-war</artifactId>
projectName-war
如果在从命令行使用mvn安装时出现上述错误(相同的pom可能在eclipse中工作),则必须稍微更改pom.xml

而不是以下内容:

<modules>
        <module>../my-util</module>
        <module>../my-server</module>           
</modules>

../my util
../我的服务器
按照以下步骤操作(用档案器括起来):


../my util
../我的服务器

此问题通常在复制和粘贴子项目时出现。 例如,我们有如下单个子项目

<artifactId>business-layer</artifactId> with project name as business-layer
<artifactId>service-layer</artifactId> with project name as **xyz**-layer
<modules>
        <module>business-layer</module>
        <module>**service-layer**</module>
</modules>
项目名称为业务层的业务层
项目名称为**xyz**的服务层-层
业务层
**服务层**

初始生成期间的项目名称应与模块名称相同。这不需要添加标记,因为profiles标记的目的是触发具有特定操作的构建

如果pom.xml位于正确位置,但其中有错误,您也可能会遇到此问题。

我在通过IntelliJ重命名某些模块时遇到此错误:

我通过执行以下操作解决了此问题:


右键单击每个模块的pom.xml,然后从出现的列表中单击“
添加为Maven模块”

这就是解决我的问题的方法。浪费了一个多小时看其他地方。另外,如果有一个解释也很好。在概要文件中封装模块后,错误消息消失了,但是构建完全忽略了模块。构建模块没有达到预期的效果。
<modules>
        <module>../my-util</module>
        <module>../my-server</module>           
</modules>
<profiles>
    <profile>
        <modules>
            <module>../my-util</module>
            <module>../my-server</module>           
        </modules>
    </profile>
</profiles>
<artifactId>business-layer</artifactId> with project name as business-layer
<artifactId>service-layer</artifactId> with project name as **xyz**-layer
<modules>
        <module>business-layer</module>
        <module>**service-layer**</module>
</modules>