2016-10-13 2 views
3

Я использую Maven 3.x, и у меня есть нижняя структура в родительском pom и child pom.Maven - версия родительского pom и child pom для наследования родительской версии pom

родитель ПОМ

<groupId>com.mygoogle.sample</groupId> 
<artifactId>workorder</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>pom</packaging> 
<properties> 
    <project.version>1.0-SNAPSHOT</project.version>    
</properties> 

У меня есть ребенок POM, который, как показано ниже

<parent> 
<groupId>com.mygoogle.sample</groupId> 
<version>${project.version}</version> 
<artifactId>workorder</artifactId>  
</parent> 
<artifactId>workorder-client</artifactId> 
<packaging>jar</packaging> 

Когда я строю свои артефакты, используя МВН установки, я вижу банки получать встроенные в моей папке .m2 но project.version не заменяется фактической версией, то есть 1.0-SNAPSHOT.

  1. Будет ли родитель ПОМ и/или ребенок ПОМ в моем .m2 хранилище для каждого из артефактов версия поименованные или это будет project.version

  2. Должен ли я даже указать project.version, как собственность в моей родительской помпе. В документации maven указано, что project.version доступно по defualt. Я также попробовал mvn install post удалить свойство project.version в моем родительском pom, но у созданных артефактов была версия как {project.version} в моей .m2 папке, а не фактическая версия

  3. Как установить версию в моем родительском помпе, и у меня все мои детишки имеют ту же версию. Например, я хочу установить версию в режиме pom, а workorder-client pom также должен наследовать ту же версию.

+0

Возможный дубликат [имущества Maven не был разрешен в родительский тег] (http://stackoverflow.com/questions/36111219/maven-property-not-resolved-in-parent-tag) – Tunaki

+0

Вам нужно для указания '' и не может полагаться на свойство 'project.version': оно не оценивается в элементе' '. – Tunaki

+0

@Tunaki, только что отредактировал мое оригинальное сообщение, я намеревался указать фактическую версию в родительском pom, но указал свойство {project.version} в сообщении, которое я исправил сейчас. Итак, с приведенной выше настройкой, почему мой ребенок помёт не собирать имущество в родительском помпе. Извинения за начальную путаницу. – megan

ответ

4

Вы родитель П должен быть как:

<groupId>com.mygoogle.sample</groupId> 
<artifactId>workorder</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>pom</packaging> 

Ваш ребенок П должен быть как:

<parent> 
    <groupId>com.mygoogle.sample</groupId> 
    <version>1.0-SNAPSHOT</version> 
    <artifactId>workorder</artifactId>  
</parent> 

<artifactId>workorder-client</artifactId> 
<packaging>jar</packaging> 

Это поможет в поддержании контроля версий между родителем и ребенком (ы) плавно.
В следующий раз, когда вы хотите изменить версию, просто используйте приведенную ниже команду, указывая на родительский каталог pom.

mvn versions:set -DnewVersion=2.0-SNAPSHOT

+0

Могу ли я иметь {project.version} в моем дочернем помпе ниже com.mygoogle.sample $ {project.версия} WorkOrder WorkOrder-клиент баночка megan

+0

Просто отредактировал мой оригинальный пост, я намеревался указать фактическую версию в родительском ПОМ, но указано {project.version} свойство в пост, который Я сейчас поправил. Итак, с приведенной выше настройкой, почему мой дочерний pom не собирает свойство в родительском pom – megan

+0

Вы не можете использовать ' $ {project.version}', потому что в дочернем помпе такого свойства не определено. Таким образом, наследование не произойдет в первую очередь. Вероятно, вы сбиты с толку, что он унаследует родительский pom. Но поскольку свойство '$ {project.version}' не определено, дочерний pom не сможет решить ' $ {project.version}' значение. Следовательно, наследование не состоится. –

Смежные вопросы