2013-09-05 3 views
19

Можно ли переопределить свойства модуля из родительского помпового без изменения модуля pom?Переопределение свойств модуля из родительского POM в Maven

Например:

модуль POM (не может изменить его вообще):

<properties> 
    <someProperty>some value to be replaced</properties> 
</properties> 

родитель POM:

<properties> 
    <someProperty>strongValue</someProperty> <!-- some magic here --> 
</properties> 

эффективный модуль POM:

<properties> 
    <someProperty>strongValue</someProperty> 
</properties> 

Если да, то как его достичь?

ответ

8

Только я знаю, что для этого обязательно нужно определить свойство в командной строке, например. mvn -DsomeProperty=strongValue <mvn goals/phases here>.

Вы можете экспериментировать с профилями, определенными в родительском; Я подозреваю, что это не поможет.

+1

thx, но мне нужно переопределить его из родительского POM, а не из командной строки (как задан вопрос) – zacheusz

+1

Я думаю, что вам тогда не повезло. – user944849

+1

Определение свойств в профиле родителя и включение профиля не активирует свойства в дочернем проекте. –

8

Нет, вы не можете. Идея состоит в том, что если не следует переопределять значение, не используйте свойство. Если у вас нет другого варианта, вы можете заставить его с http://maven.apache.org/enforcer/enforcer-rules/requireProperty.html, который сломает сборку, если свойство имеет другое значение, чем ожидалось.

+1

Что вы имеете в виду, вы не можете? Мы делаем это все время, и это работает. Конечно, вы можете переопределить родительские свойства pom. Просто проверил мой родительский pom для проекта, где я это сделал, потому что вы сомневались. И это действительно работает. Мой эффективный pom показывает переопределенное значение. – Lawrence

+2

Я думаю, вы неправильно поняли вопрос. Попытайтесь прочитать его как: может ли свойство быть окончательным (как в Java), поэтому его нельзя переопределить ребенком? На этот вопрос ответ «нет». –

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