2010-03-08 4 views
8

У меня есть проект с несколькими модулями maven, который успешно строится, я хотел бы построить всего один модулей, которые у меня есть. Как мне это сделать с profiles? Я мог бы сделать это с консоли двумя способами, один из способов - перейти к дочернему модулю и mvn package, или я мог бы использовать реактор, чтобы построить только один модуль.Профиль Maven для одного модуля

Могу ли я сделать то же самое с профилями? Изменяя ПОМ? Спасибо

EDIT

Если невозможно из POM, я могу сделать это с settings.xml?

ответ

13

Чтобы реализовать это с помощью профилей, вы можете использовать два профиля: один <activeByDefault> со всеми модулями и еще один с нужным модулем. Что-то вроде этого:

<profiles> 
    <profile> 
    <id>all</id> 
    <activation> 
     <activeByDefault>true</activeByDefault> 
    </activation> 
    <modules> 
     <module>module-1</module> 
     ... 
     <module>module-n</module> 
    </modules> 
    </profile> 
    <profile> 
    <id>module-2</id> 
    <modules> 
     <module>module-2</module> 
    </modules> 
    </profile> 
<profiles> 

А потом называют это так:

mvn -Pmodule-2 package 

Две вещи, чтобы отметить здесь:

  1. Вы должны переместить <modules> из POM в «по умолчанию "(потому что <modules> из профиля являются только аддитивными, они не скрывают модули, объявленные в POM).
  2. Отметив его как <activeByDefault>, профиль «по умолчанию» будет выбран, если ничего не активен, но деактивирован, если что-то еще.

Можно даже Параметризуем имя модуля и передать его в собственность:

<profiles> 
    ... 
    <profile> 
    <id>module-x</id> 
    <activation> 
     <property> 
     <name>module-name</name> 
     </property> 
    </activation> 
    <modules> 
     <module>${module-name}</module> 
    </modules> 
    </profile> 
<profiles> 

И вызвать Maven так:

mvn -Dmodule-name=module-2 package 

Но это плохо ИМХО реализации, я предпочитают варианты «расширенного» реактора -pl (меньше xml, гораздо больше мощности и гибкости):

mvn -pl module-2 package 
+0

@Pascal Thivent Просто блестящий .. Я не знаю, что сказать .. спасибо m8, вы не заняли второе место, когда дело доходит до maven – ant

+0

Я согласен, что @Pascal - гениальный maven. Я также добавил бы, что чище использовать сборку реактора, чем настройку нескольких профилей. – 2012-11-13 21:17:46

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