GlassFish v3 e glassfish-maven-plugin (Mac)

Eu estou tentando usar o glassfishmaven-plugin ( https://maven-glassfish-plugin.dev.java.net/ ) com GlassFish v3 (eu estou em um Mac e usando o Eclipse) e eu não consigo para obter meu aplicativo da web para implantar. Eu continuo correndo em:

A senha mestra é necessária para iniciar o domínio. Sem console, sem prompts possíveis. Você deve criar o domínio com –savemasterpassword = true ou fornecer um arquivo de senha com a opção –passwordfile.

Aqui está a parte relevante do meu arquivo POM.

  development   phase development      org.glassfish.maven.plugin maven-glassfish-plugin 2.2-SNAPSHOT  ${glassfish.directory} ${glassfish.user} ${glassfish.directory}/domains/${project.artifactId}/config/domain-passwords  ${project.artifactId}    ${project.artifactId} ${project.build.directory}/artifacts/${project.artifactId}.war         ocean http://maven.ocean.net.au/snapshot  false never   true always      

Aqui está o comando start-domain que o Maven está executando.

asadmin –host localhost –port 4848 –user admin –passwordfile/var/folders/sk/skcc8rAVGSynOBBaOwWN3U+++TI/-Tmp-/mgfp5377058868244877698.tmp –interactive = false –echo = true –terse = true start-domain –debug = false –domaindir / Aplicativos / GlassFish / v3 / glassfish / domains –help = false –upgrade = false –verbose = false mvnrepo

O –passwordfile está usando um arquivo temporário, então estou supondo que esse é o problema. Por algum motivo, o parâmetro passFile não está funcionando.

Alguma ideia? Eu estou errado com a minha suposição?

No Exemplo de Configuração Bastante Completo , há de fato uma referência ao elemento , mas a documentação dos vários objectives não menciona esse elemento e se refere a lugar (consulte, por exemplo, glassfish: start-domain ou glassfish: implantar ). Então, tente atualizar a configuração do seu plugin em seu perfil de acordo:

  org.glassfish.maven.plugin maven-glassfish-plugin 2.2-SNAPSHOT  ${glassfish.directory} ${glassfish.user} ${glassfish.directory}/domains/${project.artifactId}/config/domain-passwords  ${project.artifactId}    ${project.artifactId} ${project.build.directory}/artifacts/${project.artifactId}.war     

Como uma nota lateral, eu recomendo o plugin maven-embedded-glassfish que permite rodar o Glassfish em uma única JVM usando sua API embutida. Muito agradável. Veja Usando o plugin maven para v3 glassfish incorporado para mais detalhes.

ATUALIZAÇÃO: Fiz alguns testes adicionais e, na verdade, não consegui reproduzir seu problema na minha máquina (suspiro).

Primeiro, criei um novo domínio executando o seguinte comando (de /bin ):

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

Então, criei uma nova aplicação web usando o arquétipo webapp do maven:

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

E atualizei o pom.xml do pom.xml da web recém-criado da seguinte forma:

  4.0.0 com.mycompany.app maven-glassfish-testcase war 1.0-SNAPSHOT maven-glassfish-testcase Maven Webapp http://maven.apache.org  /home/pascal/opt/glassfishv3/glassfish admin    ocean http://maven.ocean.net.au/snapshot  false never   true always      junit junit 3.8.1 test    maven-glassfish-testcase   org.glassfish.maven.plugin maven-glassfish-plugin 2.2-SNAPSHOT  ${glassfish.home} ${domain.username} ${glassfish.home}/domains/${project.artifactId}/master-password true true  ${project.artifactId} 4848     ${project.artifactId} ${project.build.directory}/${project.build.finalName}.war        

Com esta configuração, executando mvn glassfish:start-domain produz a seguinte saída:

 $ mvn glassfish: start-domain
 [INFO] Verificando projetos ...
 [INFO] snapshot org.glassfish.maven.plugin: maven-glassfish-plugin: 2.2-INSTANTÂNEO: verificando para atualizações do oceano
 [INFO] ----------------------------------------------- -------------------------
 [INFO] Edifício maven-glassfish-testcase Maven Webapp
 Segmento de tarefa [INFO]: [glassfish: start-domain]
 [INFO] ----------------------------------------------- -------------------------
 [INFO] [glassfish: start-domain {execução: default-cli}]
 [INFO] asadmin - host localhost --port 4848 --usuário admin --passwordfile/home/calcal/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 = falso maven-glassfish-testcase
 [INFO] Domínio iniciado: maven-glassfish-testcase
 [INFO] Localização do domínio: / home / pascal / opt / glassfishv3 / glassfish / domínios / maven-glassfish-testcase
 [INFO] Arquivo de log: /home/pascal/opt/glassfishv3/glassfish/domains/maven-glassfish-testcase/logs/server.log
 [INFO] Porta de administração para o domínio: 4848
 [INFO] Porta de debugging para o domínio: 9009
 [INFO] ----------------------------------------------- -------------------------
 [INFO] CONSTRUIR BEM SUCEDIDO
 [INFO] ----------------------------------------------- -------------------------
 [INFO] Tempo total: 27 segundos
 [INFO] Terminado em: seg 21 dez 20:16:17 CET 2009
 [INFO] Memória Final: 4M / 53M
 [INFO] ----------------------------------------------- -------------------------

Como você pode ver, a opção --passwordfile é passada corretamente usando o arquivo especificado no POM. Em outras palavras, as coisas estão funcionando como esperado. Talvez tente com um caminho codificado para o arquivo de senha para depurar essa configuração, ele deve funcionar!

Só demorei um pouco para perceber que eu acidentalmente deixei a propriedade “adminPassword” na configuração Maven-Glassfish-Plugin (então eu tinha ambos adminPassword e passwordFile set). O plug-in ainda usava o arquivo de senha temporário em vez do meu próprio, resultando no erro acima.

Apenas no caso de alguém ser tão estúpido quanto eu;)