Maven-glassfish-plugin: как указать цель развертывания?

Я использую Maven 3.0.4 с maven-glassfish-plugin 2.1 (http://maven-glassfish-plugin.java.net/) и Glassfish 2.1.1.

Соответствующий фрагмент POM.XML:

<profile>
        <id>deploy</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.glassfish.maven.plugin</groupId>
                    <artifactId>maven-glassfish-plugin</artifactId>
                    <version>2.1</version>
                    <configuration>
                        <glassfishDirectory>/home/user/glassfish</glassfishDirectory>
                        <domain>
                            <name>domain1</name>
                            <host>hostname</host>
                            <adminPort>4848</adminPort>
                        </domain>
                        <autoCreate>false</autoCreate>
                        <terse>true</terse>
                        <debug>false</debug>
                        <echo>true</echo>
                        <user>admin</user>
                        <passwordFile>/home/user/user.gfpass</passwordFile>
                        <components>
                            <component>
                                <name>${project.artifactId}</name>
                                <artifact>${project.build.directory}/${project.build.finalName}.war</artifact>
                            </component>
                        </components>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>

Проблема в том, что сервер Glassfish, на который я развертываю, имеет один автономный экземпляр для каждого разработчика, и запуск mvn glassfish:deploy вызывает:

[INFO] --- maven-glassfish-plugin:2.1:deploy (default-cli) @ project ---
[INFO] deploy --port 4848 --enabled=true --host hostanme --precompilejsp=false --verify=false --echo=true --upload=true --terse=true --generatermistubs=false --passwordfile /home/user/user.gfpass --interactive=false --availabilityenabled=false --name project --target server --force=true --user admin /home/user/git/project/target/project-1.0.0-SNAPSHOT.war
[ERROR] CLI171 Command deploy failed : Application project is already deployed on other targets. Please remove all references or specify all targets (if not using asadmin command line) before attempting redeploy operation
[ERROR] Deployment of /home/user/git/project/target/project-1.0.0-SNAPSHOT.war failed.

Обратите внимание на --target server в выполняемой команде.

Как я могу указать в POM, на какой экземпляр (например, target) я хочу выполнить развертывание?


person Jerzyna    schedule 04.02.2013    source источник


Ответы (2)


После дополнительных исследований ответ: НЕТ, НЕ МОГУ.

Есть два варианта, о которых я знаю:

  1. Используйте exec-maven-plugin для вызова asadmin с нужными параметрами или
  2. Создайте свою собственную версию maven-glassfish-plugin с необходимыми изменениями (это то, что я сделал на данный момент).

Как оказалось, плагин очень простой, и я без проблем модифицирую его под свои нужды. Сложнее было его построить, но это уже другая история.

person Jerzyna    schedule 05.02.2013

Здравствуйте, мое решение было таким:

Я оставил pom как повторное развертывание

        <execution>
                <id>gf-deploy</id>
                <phase>package</phase>
                <goals>
                    <goal>redeploy</goal>
                </goals>
            </execution>

затем я изменил файл asadmin.bat, и после строк, в которых скрипт вызывает файл appserver-cli.jar, я добавил 3 новые строки, обратите внимание, что повторное развертывание вызывает команду undeploy и команду развертывания, поэтому трюк плагина maven Glassfish здесь напечатайте что-нибудь, когда запустится команда undeploy (Tihs будет путать плагин maven, как если бы команда undeploy всегда была успешной), но когда команда asadmin развернута, поток будет работать нормально.

:run
if NOT %1 == undeploy goto :end
%JAVA% -jar "%~dp0..\lib\client\appserver-cli.jar" %*
ECHO "TEST"
:end

if %1 == undeploy goto :end1
%JAVA% -jar "%~dp0..\lib\client\appserver-cli.jar" %*
:end1

после выполнения этой модификации повтор всегда работает так здорово!

person Juan Pablo G    schedule 17.01.2015