Maven-glassfish-плагин: как указать цель развертывания?
Я использую 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
) Я хочу развернуть в?
2 ответа
После еще одного исследования ответ - НЕТ, Я НЕ МОГУ.
Есть два варианта, которые мне известны:
- использование
exec-maven-plugin
звонитьasadmin
с желаемыми параметрами, или - Форк свою собственную версию
maven-glassfish-plugin
с необходимыми изменениями (это то, что я сделал на данный момент).
Как оказалось, плагин очень прост, и у меня нет проблем, чтобы изменить его в соответствии с моими потребностями. Еще сложнее было его построить, но это уже другая история.
Здравствуйте, мое решение было так:
Я оставил пом в качестве передислокации казни
<execution>
<id>gf-deploy</id>
<phase>package</phase>
<goals>
<goal>redeploy</goal>
</goals>
</execution>
затем я изменил файл asadmin.bat, и после строк, в которых скрипт вызывает файл appserver-cli.jar, я добавил 3 новые строки, обратите внимание, что повторное развертывание вызывает команду undeploy и deploy, так что хитрость плагина 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
после этой модификации reploy всегда работает так здорово!