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 . выборочно запускать только корневой проект без перехода в дочерние проекты.

Другие вопросы по тегам