Мы оптимизируем нашу конфигурацию Maven (ранее использовав ant), и я только что прочитал Maven by Example из книги Sonatype, Дублирование конфигураций привело нас к неприятностям в прошлом, поэтому я абсолютно хочу избежать даже самой маленькой части этого.
В приведенной выше книге упоминается использование встроенных свойств project.groupId и project.version из родительского модуля при обращении к другим подмодулям sibling в качестве зависимостей:
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>model</artifactId>
<version>${project.version}</version>
</dependency>
Это отлично работает, мне это нравится. Но это не работает в теге подмодуля pom.xml's:
<parent>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<relativePath>../pom.xml</relativePath>
</parent>
Я предполагаю, что это не большая проблема, похоже, что я могу создавать для них свойства, но со многими модулями мне бы очень хотелось полностью понять лучшие практики для этих проблем.
UPDATE Кажется, лучший способ сделать это следующим образом. Немного уродливый, но устраняет повторяющиеся жестко заданные значения. parent pom.xml:
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<packaging>pom</packaging>
<version>${version}</version>
<properties>
<groupId>com.mycompany</groupId>
<artifactId>mycompany</artifactId>
<version>1.0</version>
</properties>
child pom.xml:
<parent>
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${version}</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>child</artifactId>