2012-09-19 3 views
1

У меня есть проект мультимодуля maven, и я надеялся, что смогу использовать профили для настройки конфигурации плагина для двух случаев на основе свойства POM, но оказывается, что профили могут активироваться только внешними свойствами, а не по свойствам POM, теперь я ищу другой способ иметь другую конфигурацию проекта, и я хотел получить некоторые идеи. Вот моя настройкаКонфигурация пользовательского плагина maven

У меня есть трехуровневое дерево: родительский POM X с множеством подмодулей A, B, C, ... и каждый из этих модулей имеет 2 подмодуля 1 и 2 (так что A1, A2 , B1, B2 и т. Д.)

Что мне нужно сделать, это настроить конфигурацию листового модуля для всех модулей типа 1 и другого для всех модулей типа 2. Я стараюсь избегать использования всего 1-го уровня общий родительский и все другой (другой) общий родительский элемент, поскольку 1 и 2 уже имеют некоторые данные из их соответствующего родителя (например, A или B). Если нет другого пути, я надаю все общие данные от A до A1 и A2 (не идеальный, DRY-принцип) и сделаю все наследование 1 от общего 1 родителя, но я стараюсь избегать этого. Как я уже сказал, я попытался установить свойство в листьях дерева с указанием свойства, если оно было 1 или 2, а затем помещало два разных профиля в grandparent POM X и активировало профиль на основе свойства , Это не сработало.

Любые другие предложения?

+1

Пожалуйста, рассмотрите вопрос об изменении этого вопроса на диаграмме, иллюстрирующей макет модуля и указав плагины, которые вы используете, - при необходимости, с помощью фрагментов pom.xml. – noahlz

ответ

-1

Я считаю, что вы можете достичь своей цели с <pluginManagement>

Например, в ваших родителях POM, у вас есть что-то вроде этого:

<pluginManagement> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.5</version> 
     <configuration> 
     <systemPropertyVariables> 
       <vendor.license.file>../licenses/vendor.lic</vendor.license.file> 
     </systemPropertyVariables> 
     </configuration> 
    </plugin> 
</pluginManagement> 

который определяет Surefire версии 2.5 в для дочерних модулей П в. Обратите внимание, что на самом деле вы можете разместить не только версию в конфигурации плагина, такую ​​как конфигурация, которую дочерние проекты наследуют (и переопределяют). См. Maven POM Reference - Plugin Management

+0

Ваше решение не позволяет иметь две различные конфигурации, которые мне нужны: if (имеет тип 1) {use config 1} else if (имеет тип 2) {use config 2} – Hilikus

+0

Do "type 1 "и" тип 2 "имеют разные родительские POM? Кроме того, вы можете активировать свой профиль, возможно, на основе чего-то другого, кроме свойства, то есть наличия файла? Можете ли вы создать профиль в каждом подмодуле и сделать его «активным по умолчанию»? – noahlz

+0

Прямо сейчас у них есть общий родитель, как я сказал в моем OP, есть A1, A2, поэтому они разделяют родительский A, а B1, B2 разделяют родителя B. Опция, о которой я упоминал, заключается в том, чтобы сделать A1 и B1 разделять родительский common1 и A2 B2 совместно используют родительский common2. Но i ** do ** имеют общую информацию в A и в B, которые нужно было бы сдвинуть и дублировать в A1 и A2 – Hilikus

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