maven-glassfish-plugin尝试在域已经启动时启动它

时间:2010-11-10 03:27:01

标签: glassfish maven maven-3 maven-glassfish-plugin

我刚开始使用maven-glassfish-plugin。我开始了域名目标。但是,当我尝试执行部署目标时,插件认为域未启动并尝试重新启动它 - 这显然会失败。见下面的日志:

> mvn glassfish:start-domain
[INFO] --- maven-glassfish-plugin:2.1:start-domain (default-cli) @ arquillian-sample ---
[INFO] Deprecated syntax, instead use:
[INFO] asadmin --passwordfile C:\apps\glassfish-3.0.1\glassfish/domains/domain1/config/domain-passwords --interactive=false --user admin --echo --terse=false start-domain [options] ...
[INFO] asadmin --host localhost --port 4848 --user admin --passwordfile C:\apps\glassfish-3.0.1\glassfish/domains/domain1/config/domain-passwords --interactive=false --echo=true --terse=false start-domain --debug=true --domaindir C:\apps\glassfish-3.0.1\glassfish\domains --help=false --upgrade=false --verbose=false domain1
[INFO] Waiting for DAS to start ...
[INFO] Started domain: domain1
[INFO] Domain location: C:\apps\glassfish-3.0.1\glassfish\domains\domain1
[INFO] Log file: C:\apps\glassfish-3.0.1\glassfish\domains\domain1\logs\server.log
[INFO] Admin port for the domain: 4848
[INFO] Debug port for the domain: 9009
[INFO] Command start-domain executed successfully.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

> mvn glassfish:deploy
[INFO] --- maven-glassfish-plugin:2.1:deploy (default-cli) @ arquillian-sample ---
[INFO] Domain domain1 isn't started. Starting it for you.
[INFO] Deprecated syntax, instead use:
[INFO] asadmin --passwordfile C:\apps\glassfish-3.0.1\glassfish/domains/domain1/config/domain-passwords --interactive=false --user admin --echo --terse=false start-domain [options] ...
[INFO] asadmin --host localhost --port 4848 --user admin --passwordfile C:\apps\glassfish-3.0.1\glassfish/domains/domain1/config/domain-passwords --interactive=false --echo=true --terse=false start-domain --debug=true --domaindir C:\apps\glassfish-3.0.1\glassfish\domains --help=false --upgrade=false --verbose=false domain1
[INFO] There is a process already using the admin port 4848 -- it probably is another instance of a GlassFish server.
[INFO] Command start-domain failed.
[ERROR] Unable to start domain "domain1".
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
  1. 为什么插件无法检测到域已经启动?
  2. 为什么我会收到所有“弃用语法”警告?
  3. 要解决问题#1,我只是在服务器未运行时尝试发布部署目标。这次部署目标成功启动了服务器,但部署失败,并显示消息“CLI136端口0应为数值”。见下文:

    > mvn glassfish:deploy
    [INFO] --- maven-glassfish-plugin:2.1:deploy (default-cli) @ arquillian-sample ---
    [INFO] Domain domain1 isn't started. Starting it for you.
    [INFO] Deprecated syntax, instead use:
    [INFO] asadmin --passwordfile C:\apps\glassfish-3.0.1\glassfish/domains/domain1/config/domain-passwords --interactive=false --user admin --echo --terse=false start-domain [options] ...
    [INFO] asadmin --host localhost --port 4848 --user admin --passwordfile C:\apps\glassfish-3.0.1\glassfish/domains/domain1/config/domain-passwords --interactive=false --echo=true --terse=false start-domain --debug=true --domaindir C:\apps\glassfish-3.0.1\glassfish\domains --help=false --upgrade=false --verbose=false domain1
    [INFO] Waiting for DAS to start ...
    [INFO] Started domain: domain1
    [INFO] Domain location: C:\apps\glassfish-3.0.1\glassfish\domains\domain1
    [INFO] Log file: C:\apps\glassfish-3.0.1\glassfish\domains\domain1\logs\server.log
    [INFO] Admin port for the domain: 4848
    [INFO] Debug port for the domain: 9009
    [INFO] Command start-domain executed successfully.
    [INFO] Command deploy failed.
    [ERROR] CLI136 Port 0 should be a numeric value.
    [ERROR] Deployment of S:\Projects\archfirstunf\java\trunk\examples\arquillian-sample\target\arquillian-sample.war failed.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    

    我做错了什么?

    这是我的插件配置:

    <plugin>
        <groupId>org.glassfish.maven.plugin</groupId>
        <artifactId>maven-glassfish-plugin</artifactId>
        <version>2.1</version>
        <configuration>
            <glassfishDirectory>${glassfish.directory}</glassfishDirectory>
            <user>admin</user>
            <passwordFile>${glassfish.directory}/domains/domain1/config/domain-passwords</passwordFile>
            <domain>
                <name>domain1</name>
            </domain>
            <components>
                <component>
                    <name>${project.artifactId}</name>
                    <artifact>target/${project.build.finalName}.war</artifact>
                </component>
            </components>
            <debug>true</debug>
            <terse>false</terse>
            <echo>true</echo>
        </configuration>
    </plugin>
    

1 个答案:

答案 0 :(得分:5)

我正在使用以下配置(请注意httpPort元素中的adminPortdomain

<plugin>
    <groupId>org.glassfish.maven.plugin</groupId>
    <artifactId>maven-glassfish-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <glassfishDirectory>${glassfish.directory}</glassfishDirectory>
        <user>admin</user>
        <passwordFile>${glassfish.directory}/domains/domain1/config/domain-passwords</passwordFile>
        <domain>
            <name>domain1</name>
            <httpPort>8080</httpPort>
            <adminPort>4848</adminPort>
        </domain>
        <components>
            <component>
                <name>${project.artifactId}</name>
                <artifact>target/${project.build.finalName}.war</artifact>
            </component>
        </components>
        <debug>true</debug>
        <terse>false</terse>
        <echo>true</echo>
    </configuration>
</plugin>

没有它们,事情就没有按预期工作(尽管它们应该是可选的)。但是开始,部署(有或没有服务器启动)等对我来说都很好。

PS:我不记得这是否重要,但我使用的是2.2-SNAPSHOT版本的插件。


更新:以下是我使用的确切配置:

  <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>
      <autoCreate>true</autoCreate>
      <debug>true</debug>
      <echo>true</echo>
      <skip>${test.int.skip}</skip>
      <domain>
        <name>${project.artifactId}</name>
        <httpPort>8080</httpPort>
        <adminPort>4848</adminPort> <!-- [ERROR] CLI136 Port 0 should be a numeric value. -->
      </domain>
      <components>
        <component>
          <name>${project.artifactId}</name>
          <!--artifact>${project.build.directory}/${project.build.finalName}.war</artifact-->
          <artifact>${project.build.directory}/${project.build.finalName}</artifact>
        </component>
      </components>
    </configuration>
  </plugin>

这是我得到的输出:

$ mvn glassfish:deploy 
[INFO] Scanning for projects...
...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building maven-glassfish-testcase Maven Webapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-glassfish-plugin:2.2-SNAPSHOT:deploy (default-cli) @ maven-glassfish-testcase ---
...
[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 deploy --name maven-glassfish-testcase --force=false --precompilejsp=false --verify=false --enabled=true --generatermistubs=false --availabilityenabled=false --keepreposdir=false --keepfailedstubs=false --logReportedErrors=true --upload=false --help=false /home/pascal/Projects/stackoverflow/maven-glassfish-testcase/target/maven-glassfish-testcase
[INFO] Application deployed successfully with name maven-glassfish-testcase.
[INFO] 
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
...

请注意,我没有收到任何奇怪的“已弃用”消息。事情就好了。

添加httpPort和adminPort会添加新的复杂功能 - 现在,当我进行部署时,身份验证失败(即使为初始域目标传递了相同的身份验证)。

> mvn glassfish:start-domain
[INFO] --- maven-glassfish-plugin:2.2-SNAPSHOT:start-domain (default-cli) @ arquillian-sample ---
[INFO] Deprecated syntax, instead use:
[INFO] asadmin --passwordfile C:\apps\glassfish-3.0.1\glassfish/domains/domain1/config/domain-passwords --interactive=false --user admin --echo --terse=false start-domain [options] ...
[INFO] asadmin --host localhost --port 4848 --user admin --passwordfile C:\apps\glassfish-3.0.1\glassfish/domains/domain1/config/domain-passwords --interactive=false --echo=true --terse=false start-domain --debug=true --domaindir C:\apps\glassfish-3.0.1\glassfish\domains --help=false --upgrade=false --verbose=false domain1
[INFO] Waiting for DAS to start ...........
[INFO] Started domain: domain1
[INFO] Domain location: C:\apps\glassfish-3.0.1\glassfish\domains\domain1
[INFO] Log file: C:\apps\glassfish-3.0.1\glassfish\domains\domain1\logs\server.log
[INFO] Admin port for the domain: 4848
[INFO] Debug port for the domain: 9009
[INFO] Command start-domain executed successfully.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

> mvn glassfish:deploy
[INFO] --- maven-glassfish-plugin:2.2-SNAPSHOT:deploy (default-cli) @ arquillian-sample ---
[INFO] Deprecated syntax, instead use:
[INFO] asadmin --port 4848 --host localhost --passwordfile C:\apps\glassfish-3.0.1\glassfish/domains/domain1/config/domain-passwords --interactive=false --user admin --echo --terse=false deploy [options] ...
[INFO] Command deploy failed.
[ERROR] Authentication failed for user: admin
[ERROR] (Usually, this means invalid user name and/or password)
[ERROR] Deployment of S:\Projects\archfirstunf\java\trunk\examples\arquillian-sample\target\arquillian-sample.war failed.
[ERROR] For more detail on what might be causing the problem try running maven with the --debug option
[ERROR] or setting the maven-glassfish-plugin "echo" property to "true".
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.973s
[INFO] Finished at: Wed Nov 10 01:51:04 EST 2010
[INFO] Final Memory: 10M/183M
[INFO] ------------------------------------------------------------------------

将版本更改为2.2-SNAPSHOT没有任何区别。 BTW快照在java.net存储库中不可用 - 我必须到这里来获取它:

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