Детский модуль 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