Question

I'm using Maven 3.0.4 with maven-glassfish-plugin 2.1 (http://maven-glassfish-plugin.java.net/) and Glassfish 2.1.1.

Relevant POM.XML fragment:

<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>

The problem is, the Glassfish server I'm deploying onto has one stand-alone instance per developer configured, and running mvn glassfish:deploy causes:

[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.

Note --target server in the executed command.

How can I specify in POM which instance (i.e. target) I want to deploy to?

Was it helpful?

Solution

After some more research, the answer is NO, I CANNOT.

There are two options I'm aware of:

  1. Use exec-maven-plugin to call asadmin with desired parameters, or
  2. Fork your own version of maven-glassfish-plugin with changes required (that's what I've done as for now).

As it turns out, the plugin is very simple, and I've no problem to modify it to suit my needs. More troublesome was building it, but that's another story.

OTHER TIPS

Hello my solution was this:

I left the pom as a redeploy execution

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

then I modified the asadmin.bat file, and, after the lines where the script is calling the appserver-cli.jar file I added 3 new lines, notice that redeploy calls an undeploy and a deploy command so the maven glassfish plugin's trick here is print something when the undeploy command runs (Tihs will confuse the maven plugin as if the undeploy command were success always), but, when the asadmin command is deploy the flow will run normal.

: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

after do this modification reploy is alaways working so great!

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top