Ребенок не находит Родительский pom в плоской структурированной многомодульной сборке maven
я настраиваю многомодульный проект с плоской структурой, т. е. родитель и ребенок находятся в одном базовом каталоге. Родитель определяется как
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>company</groupId>
<artifactId>parent</artifactId>
<packaging>pom</packaging>
<version>1-0-SNAPSHOT</version>
<name>child</name>
<modules>
<module>../child</module>
</modules>
(...)
в то время как ребенок определяется как
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>company</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>company</groupId>
<artifactId>child/artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>child</name>
(...)
(названия компаний и проектов запутывание)
происходит то, что модуль (ребенок) жалуется, что он не может найти родителя, i.e:
Reason: Cannot find parent: company:child for project: company:child:war:1.0-SNAPSHOT for project company:child:war:1.0-SNAPSHOT
есть ли очевидное решение этого, что я пропустил, или это плохо рекомендуется использовать плоскую структуру проекта?
Edit: Исправлена опечатка.
3 ответов
использовать <relativePath>
элемент, как описано в Пример 5 на введение в POM:
<project>
<parent>
<groupId>company</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>.../parent/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>company</groupId>
<artifactId>child</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>child</name>
...
</project>
дочерний pom не ссылается на родительский pom, он ссылается на другой артефакт с именем "build". Следует читать:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>company</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>company</groupId>
<artifactId>child</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>child</name>
(...)