2009-12-20 22 views
7

Estoy tratando de usar el Glassfish-maven-plugin (https://maven-glassfish-plugin.dev.java.net/) con GlassFish v3 (estoy en una Mac y usando Eclipse) y no puedo obtener mi aplicación web para implementar. Me sigo encontrándose con:GlassFish v3 y glassfish-maven-plugin (Mac)

La Contraseña maestra es necesaria para iniciar el dominio. Sin consola, sin indicaciones posibles. Debe crear el dominio con --savemasterpassword = true o proporcionar un archivo de contraseña con la opción --passwordfile.

Aquí está la parte relevante de mi archivo POM.

<profiles> 
    <profile> 
     <id>development</id> 
     <activation> 
      <property> 
       <name>phase</name> 
       <value>development</value> 
      </property> 
     </activation> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.glassfish.maven.plugin</groupId> 
        <artifactId>maven-glassfish-plugin</artifactId> 
        <version>2.2-SNAPSHOT</version> 
        <configuration> 
         <glassfishDirectory>${glassfish.directory}</glassfishDirectory> 
         <user>${glassfish.user}</user> 
         <passFile>${glassfish.directory}/domains/${project.artifactId}/config/domain-passwords</passFile> 
         <domain> 
          <name>${project.artifactId}</name> 
         </domain> 
         <components> 
          <component> 
           <name>${project.artifactId}</name> 
           <artifact>${project.build.directory}/artifacts/${project.artifactId}.war</artifact> 
          </component> 
         </components> 
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 
     <pluginRepositories> 
      <pluginRepository> 
       <id>ocean</id> 
       <url>http://maven.ocean.net.au/snapshot</url> 
       <releases> 
        <enabled>false</enabled> 
        <updatePolicy>never</updatePolicy> 
       </releases> 
       <snapshots> 
        <enabled>true</enabled> 
        <updatePolicy>always</updatePolicy> 
       </snapshots> 
      </pluginRepository> 
     </pluginRepositories> 
    </profile> 
</profiles> 

Aquí está el comando de inicio de dominio que Maven está ejecutando.

asadmin --host localhost --port 4848 --user administrador --passwordfile /var/folders/sk/skcc8rAVGSynOBBaOwWN3U+++TI/-Tmp-/mgfp5377058868244877698.tmp --interactive = false --echo = true --terse = true puesta en dominio --debug = false --domaindir/Aplicaciones/GlassFish/v3/glassfish/dominios --help = false --upgrade = false --verbose = false mvnrepo

El archivo password está usando un archivo temporal, así que supongo que ese es el problema. Por algún motivo, el parámetro passFile no funciona.

¿Alguna idea? Estoy equivocado con mi suposición?

+0

¿hizo que sus variables de pom se resuelven correctamente? – Bozho

+0

Sí, me aseguré de que mis variables POM se estuvieran resolviendo. – anthonator

Respuesta

11

En el Fairly Complete Configuration Example, en efecto, hay una referencia al elemento de <passFile> pero la documentación de los diversos objetivos no menciona este elemento y se refieren a <passwordFile> lugar (véase, por ejemplo glassfish:start-domain o glassfish:deploy). Por lo tanto, tratar de actualizar la configuración de su plugin en su perfil en consecuencia:

<plugin> 
    <groupId>org.glassfish.maven.plugin</groupId> 
    <artifactId>maven-glassfish-plugin</artifactId> 
    <version>2.2-SNAPSHOT</version> 
    <configuration> 
    <glassfishDirectory>${glassfish.directory}</glassfishDirectory> 
    <user>${glassfish.user}</user> 
    <passwordFile>${glassfish.directory}/domains/${project.artifactId}/config/domain-passwords</passwordFile> 
    <domain> 
     <name>${project.artifactId}</name> 
    </domain> 
    <components> 
     <component> 
     <name>${project.artifactId}</name> 
     <artifact>${project.build.directory}/artifacts/${project.artifactId}.war</artifact> 
     </component> 
    </components> 
    </configuration> 
</plugin> 

Como nota al margen, recomiendo el maven-embedded-glassfish-plugin que permite ejecutar Glassfish en una única JVM utilizando su API incorporado. Muy agradable. Ver Using maven plugin for v3 embedded glassfish para más detalles.

ACTUALIZACIÓN: Hice algunas pruebas adicionales y, en realidad no pude reproducir su problema en mi máquina (suspiro).

En primer lugar, he creado un nuevo dominio ejecutando el siguiente comando (de <glassfish_home>/bin):

$ ./asadmin create-domain --savemasterpassword=true maven-glassfish-testcase 

A continuación, he creado una nueva aplicación web utilizando arquetipo webapp del experto:

$ mvn archetype:create -DgroupId=com.mycompany.app \ 
     -DartifactId=maven-glassfish-testcase \ 
     -DarchetypeArtifactId=maven-archetype-webapp 

y actualizada la pom.xml de la aplicación web recién creada de la siguiente manera:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.mycompany.app</groupId> 
    <artifactId>maven-glassfish-testcase</artifactId> 
    <packaging>war</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>maven-glassfish-testcase Maven Webapp</name> 
    <url>http://maven.apache.org</url> 
    <properties> 
    <glassfish.home>/home/pascal/opt/glassfishv3/glassfish</glassfish.home> 
    <domain.username>admin</domain.username> 
    </properties> 
    <pluginRepositories> 
    <pluginRepository> 
     <id>ocean</id> 
     <url>http://maven.ocean.net.au/snapshot</url> 
     <releases> 
     <enabled>false</enabled> 
     <updatePolicy>never</updatePolicy> 
     </releases> 
     <snapshots> 
     <enabled>true</enabled> 
     <updatePolicy>always</updatePolicy> 
     </snapshots> 
    </pluginRepository> 
    </pluginRepositories> 
    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 
    <build> 
    <finalName>maven-glassfish-testcase</finalName> 
    <plugins> 
     <plugin> 
     <groupId>org.glassfish.maven.plugin</groupId> 
     <artifactId>maven-glassfish-plugin</artifactId> 
     <version>2.2-SNAPSHOT</version> 
     <configuration> 
      <glassfishDirectory>${glassfish.home}</glassfishDirectory> 
      <user>${domain.username}</user> 
      <passwordFile>${glassfish.home}/domains/${project.artifactId}/master-password</passwordFile> 
      <debug>true</debug> 
      <echo>true</echo> 
      <domain> 
      <name>${project.artifactId}</name> 
      <adminPort>4848</adminPort> <!-- mandatory for mvn glassfish:deploy --> 
      </domain> 
      <components> 
      <component> 
       <name>${project.artifactId}</name> 
       <artifact>${project.build.directory}/${project.build.finalName}.war</artifact> 
      </component> 
      </components> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

Con esta configuración, corriendo mvn glassfish:start-domain produce el siguiente resultado:

 
$ mvn glassfish:start-domain 
[INFO] Scanning for projects... 
[INFO] snapshot org.glassfish.maven.plugin:maven-glassfish-plugin:2.2-SNAPSHOT: checking for updates from ocean 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building maven-glassfish-testcase Maven Webapp 
[INFO] task-segment: [glassfish:start-domain] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [glassfish:start-domain {execution: default-cli}] 
[INFO] asadmin --host localhost --port 4848 --user admin --passwordfile /home/pascal/opt/glassfishv3/glassfish/domains/maven-glassfish-testcase/master-password --interactive=false --echo=true --terse=true start-domain --debug=true --domaindir /home/pascal/opt/glassfishv3/glassfish/domains --help=false --upgrade=false --verbose=false maven-glassfish-testcase 
[INFO] Started domain: maven-glassfish-testcase 
[INFO] Domain location: /home/pascal/opt/glassfishv3/glassfish/domains/maven-glassfish-testcase 
[INFO] Log file: /home/pascal/opt/glassfishv3/glassfish/domains/maven-glassfish-testcase/logs/server.log 
[INFO] Admin port for the domain: 4848 
[INFO] Debug port for the domain: 9009 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 27 seconds 
[INFO] Finished at: Mon Dec 21 20:16:17 CET 2009 
[INFO] Final Memory: 4M/53M 
[INFO] ------------------------------------------------------------------------ 

Como se puede ver, la opción --passwordfile se pasa correctamente utilizando el archivo especificado en el POM. En otras palabras, las cosas funcionan como se esperaba. Tal vez intente con una ruta codificada para el archivo de contraseña para depurar esta configuración, ¡debería funcionar!

+0

Eso es correcto. La documentación se refiere a passFile. Intenté PasswordFile y no tuve suerte. Probaré el complemento que mencionaste. – anthonator

+0

Pude hacer funcionar el plugin maven-embedded-glassfish-plugin. Esto hará lo que necesito. – anthonator

+0

Pascal, al usar el comando 'asadmin', ha asumido que' 'es el directorio raíz de la distribución glassfish (por ejemplo,'/Users/foo/glassfish3'). Luego, en el archivo POM, ha asumido que es el directorio '/glassfish' (por ejemplo,' Users/foo/glassfish3/glassfish'). – Behrang

1

Me tomó un tiempo darme cuenta de que accidentalmente dejé la propiedad "adminPassword" en la configuración de Maven-Glassfish-Plugin (así que tenía configuradas tanto la contraseña de administrador como el archivo de contraseña). El complemento todavía usa el archivo de contraseña temporal en lugar del mío, lo que da como resultado el error anterior.

Sólo en caso de que alguien es tan tonto como yo;)

Cuestiones relacionadas