Maven цели в многомодульных проектах - PullRequest
1 голос
/ 25 октября 2011

У меня есть многомодульный проект с несколькими подпроектами, один из которых использует плагин maven android:

                  +-------------+ 
                  | Aggregator  |
                  |    Module   |
                  +-------------+ 

+-------------+   +-------------+   +-------------+ 
|  Module 1   |   |  Module 2   |   |  Module 3   |
|  (android)  |   |             |   |             |
+-------------+   +-------------+   +-------------+ 

Я часто запускаю следующую команду из модуля 1:

module-1 $ mvn clean install android:redeploy

Это прекрасно работает, потому что в модуле 1 объявлен плагин android, указанный в pom.

Было бы удобно, если бы я мог выполнить ту же команду, например.mvn clean install android:redeploy из модуля Aggregator, и maven знает, что он должен запускать «clean» и «install» во всех подмодулях, а «android: redeploy» только в модуле (модулях), которые его поддерживают, а именно в модуле 1.

Вместо этого, когда я пытаюсь запустить команду из модуля агрегатора, я получаю сообщение об ошибке «Ошибка разрешения версии для плагина», что имеет смысл, так как оно не было объявлено в агрегаторе, ина самом деле не имеет смысла быть объявленным в агрегаторе.

Есть ли умный способ, которым я могу настроить свои модули, чтобы просто "делать правильные вещи" в этой ситуации, чтобы мне не нужно было запускатьmaven в двух отдельных каталогах?

1 Ответ

1 голос
/ 25 октября 2011

Добавьте предложение pluginManagement для плагина в родительский проект.

Когда вы помещаете элемент <plugin/> в <pluginManagement/>, это означает, что он предоставляет конфигурацию для этого плагина, когда это необходимо, но не дает команду maven запустить его.

Вы помещаете <skip>${skip-android}</skip> в эту конфигурацию (при условии, что этот плагин поддерживает стандартный шаблон.

В агрегаторе для свойства skip-android установлено значение true.

Затем вы настраиваете отдельные проекты, где имеет смысл установить для свойства skip-android значение false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...