Maven maven-glassfish-плагин в мультипроектной установке
Короткая версия:
Я хотел бы maven-glassfish-plugin
выполняется только в корневом проекте в иерархической (основанной на наследовании) многопроектной установке maven.
Длинная версия:
Следующая настройка:
project-root
|
+-pom.xml
|
+ ear-module
| |
| +-pom.xml
|
+ jar-module
|
+-pom.xml
Все субмодули включены в корневой проект через <modules>...</modules>
и все подмодули наследуют корневой проект pom.xml. В мой корневой проект POM я включаю maven-glassfish-plugin
:
...
<plugin>
<groupId>org.glassfish.maven.plugin</groupId>
<artifactId>maven-glassfish-plugin</artifactId>
<version>2.1</version>
<inherited>false</inherited>
<configuration>
<glassfishDirectory>${glassfish.home}</glassfishDirectory>
<passwordFile>${glassfish.home}/masterpassword.txt</passwordFile>
<domain>
<name>${project.name}</name>
<adminPort>4848</adminPort>
<httpPort>8080</httpPort>
<httpsPort>8443</httpsPort>
<iiopPort>3700</iiopPort>
<jmsPort>7676</jmsPort>
</domain>
<components>
<component>
<name>poc.vermittler</name>
<artifact>${project.basedir}/ear-module/target/ear-project-1.0-SNAPSHOT.ear</artifact>
</component>
</configuration>
</plugin>
...
(Примечание: это просто упрощенная версия моего pom. Он может не работать:)
Я хочу только развернуть ear-module
модуль к Glassfish, поэтому я добавил <inherited>false</inherited>
раздел, и изобразите модули, которые будут развернуты как <components>...</components>
в корне пом.
Теперь команда:
mvn glassfish:deploy
Применим ухо к стеклянной рыбе, пока все хорошо... но тогда maven рекурсивно будет прилично обращаться ко всем подмодулям, которые потерпят неудачу с:
No plugin found for prefix 'glassfish' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories
Я мог бы сказать Maven только запустить корневой проект с -pl
вариант, но для моего удовольствия, развертывание не должно полагаться на такую дополнительную информацию.
Большое спасибо за вашу помощь!
1 ответ
Кажется, что нет хорошего решения этой проблемы:
- либо плагин поддерживает функциональность "NOP"/ без вывода сообщений
- или он потерпит неудачу во всех подпроектах
Другим методом может быть создание нового подпроекта (который не включен в корневой проект <modules>...</modules>
но наследуется от корневого проекта) и добавляет зависимости только к проектам, имеющим артефакт развертывания.
Плагин теперь может быть включен в этот подпроект без необходимости запуска какого-либо подпроекта.
Или для тех, кто ленив mvn clean package glassfish:redeploy -pl .
выборочно запускать только корневой проект без перехода в дочерние проекты.