Детский модуль Maven не существует

Я новичок в Maven. Я извлек из SVN проект от клиента со следующей структурой:

projectName
|--> pom.xml
|--> jetty-wrapper
     |--> pom.xml
     |--> bin
          |--> pom.xml
|--> projectName-common
     |--> pom.xml
     |--> bin
          |--> pom.xml
|--> projectName-war
     |--> bin
          |--> pom.xml

pom.xml прямо под 'projectName' (пом вверху) создает три модуля

<modules>
    <module>projectName-common</module>
    <module>projectName-war</module>
    <module>jetty-wrapper</module>
</modules>

Но при выполнении mvn clean install из папки projectName выдает следующую ошибку

Child module [...]projectName\projectName-war\pom.xml of [...]projectName\pom.xml does not exist

Вопрос в следующем: должен ли быть файл pom.xml прямо под projectName-war как и в случае с остальными модулями, которые мой клиент, возможно, забыл передать в SVN?

Ответ 1

Вопрос: должен ли быть pom.xml прямо под именем projectName-war

Проще говоря да.

Вы уже поняли этот трюк, и поскольку вы не предоставили описатель проекта aka pom.xml для maven, он не сможет вызывать проектName-war действительным дочерним модулем.

В файле projectName-war обязательно должен быть файл pom.xml, и он должен иметь идентификатор артефакта, который соответствует имени под родительским объявлением модуля, т.е.

<artifactId>projectName-war</artifactId>

Ответ 2

Child module [...]projectName\projectName-war\pom.xml of [...]projectName\pom.xml does not exist

Если вы получаете вышеуказанную ошибку при использовании mvn install из командной строки (тот же самый pom может работать в eclipse), вы должны немного изменить свой pom.xml

Вместо ниже:

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

Следуйте приведенным ниже (заключите в профилографы):

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

Ответ 3

Я переименовал проект и дочерние модули в eclipse и сделал необходимые изменения в POM.xml, но затем имя папки на диске было таким же, как и раньше. Мне пришлось переименовать имена папок, а затем удалить проект на Eclipse и импортировать его снова, чтобы исправить проблему..

Ответ 4

This issue usually comes when you copy and paste the child projects
For example, We have individual child projects as below
<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>

You project name during the initial build should be same as the module name. This need not require the <profiles> tag to be added as the purpose of profiles tag is to trigger builds with specific actions