GlassFish v3和glassfish-maven-plugin(Mac)

我正在尝试使用glassfish-maven-plugin( https://maven-glassfish-plugin.dev.java.net/ )与GlassFish v3(我在Mac上并使用Eclipse),我似乎无法让我的Web应用程序部署。 我一直遇到:

启动域需要主密码。 没有控制台,没有提示可能。 您应该使用–savemasterpassword = true创建域,或者使用–passwordfile选项提供密码文件。

这是我的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      

这是Maven正在执行的start-domain命令。

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 / Applications / GlassFish / v3 / glassfish / domains –help = false –upgrade = false –verbose = false mvnrepo

–passwordfile正在使用临时文件,所以我猜这是问题所在。 由于某种原因,passFile参数不起作用。

有任何想法吗? 我的假设错了吗?

相当完整的配置示例中 ,确实存在对元素的引用,但各种目标的文档未提及此元素,而是引用 (请参阅例如glassfish:start-domain或glassfish:部署 )。 因此,请尝试相应地更新配置文件中插件的配置:

  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     

作为旁注,我推荐使用maven-embedded-glassfish-plugin ,它允许使用其嵌入式API在单个JVM中运行Glassfish。 非常好。 有关详细信息,请参阅为v3嵌入式glassfish使用maven插件 。

更新:我做了一些进一步的测试,实际上无法在我的机器上重现你的问题(叹气)。

首先,我通过执行以下命令(来自/bin )创建了一个新域:

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

然后,我使用maven的webapp原型创建了一个新的webapp:

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

并更新了新创建的webapp的pom.xml ,如下所示:

  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        

使用此设置,运行mvn glassfish:start-domain生成以下输出:

 $ mvn glassfish:start-domain
 [INFO]扫描项目......
 [INFO] snapshot org.glassfish.maven.plugin:maven-glassfish-plugin:2.2-SNAPSHOT:检查来自海洋的更新
 [INFO] ----------------------------------------------- -------------------------
 [INFO]构建maven-glassfish-testcase Maven Webapp
 [INFO]任务段:[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]开始域名:maven-glassfish-testcase
 [INFO]域名位置:/ home / pascal / opt / glassfishv3 / glassfish / domains / maven-glassfish-testcase
 [INFO]日志文件:/home/pascal/opt/glassfishv3/glassfish/domains/maven-glassfish-testcase/logs/server.log
 [INFO]域的管理端口:4848
 [INFO]域的调试端口:9009
 [INFO] ----------------------------------------------- -------------------------
 [信息]建立成功
 [INFO] ----------------------------------------------- -------------------------
 [INFO]总时间:27秒
 [INFO]完成于:2009年12月21日星期一20:16:17 CET
 [INFO]最终记忆:4M / 53M
 [INFO] ----------------------------------------------- -------------------------

如您所见,使用POM中指定的文件正确传递--passwordfile选项。 换句话说,事情按预期工作。 也许尝试使用密码文件的硬编码路径来调试此设置,它应该工作!

我花了一段时间才意识到我不小心在Maven-Glassfish-Plugin配置中留下了“adminPassword”属性(所以我同时设置了adminPassword和passwordFile)。 该插件仍然使用临时密码文件而不是我自己的密码文件,导致上述错误。

以防其他人像我一样愚蠢;)