maven - GlassFish 3 + Maven + 远程部署

标签 maven glassfish glassfish-3 cargo

我找不到任何关于如何通过 Maven 将简单的基于 Maven 的项目部署到远程 GlassFish 服务器的明确答案,例如

mvn package xxx:deploy

我认为只有cargo 插件支持GlassFish 3。对吗?

我在配置方面有问题。

任何示例远程 GlassFish 部署都会很棒。 Cargo 不是必须的,如果其他人支持远程 GlassFish 那么我们也可以使用它。

最佳答案

如果您只想使用 maven-glassfish-plugin(比如说 2.1 版),您可以通过指定“host”参数来进行远程部署。下面是一个在 maven settings.xml 中设置配置并且插件使用配置文件加载它们的示例:

在 settings.xml 中定义一个配置文件:

<profile>
     <id>production-config</id>    
     <properties>
       <glassfish.glassfishDirectory>/var/local/glassfish/</glassfish.glassfishDirectory>
       <glassfish.user>admin</glassfish.user>
       <glassfish.adminPassword>adminadmin</glassfish.adminPassword>
       <glassfish.domain.name>prd-domain</glassfish.domain.name>
       <glassfish.domain.host>NAMEOFYOURREMOTEHOST</glassfish.domain.host>
       <glassfish.domain.adminPort>10161</glassfish.domain.adminPort>
       .
       .
     </properties> 
</profile>

接下来将此配置文件放入您的事件配置文件中:
<activeProfiles>
    <activeProfile>production-config</activeProfile>
</activeProfiles>

在您的 maven 项目 pom.xml 中,创建一个配置文件并将 maven-glassfish-plugin 添加到您的配置文件列表中:
<profile>
    <id>production</id>
    <activation>
     <activeByDefault>false</activeByDefault>
     <os>
    <arch>x86</arch>
    <family>linux</family>
     </os>
     <property>
    <name>profile</name>
    <value>production</value>
     </property>
     <file>
      <exists>
       ${glassfish.glassfishDirectory}/domains/${glassfish.domain.name}/config/domain.passwords
      </exists>
     </file>
   </activation>
   <build>
      <plugins>
          <plugin>
               <groupId>org.glassfish.maven.plugin</groupId>
               <artifactId>maven-glassfish-plugin</artifactId>
               <configuration>
                  <terse>true</terse>
                  <echo>true</echo>
                  <debug>true</debug>
                  <glassfishDirectory>${glassfish.glassfishDirectory}</glassfishDirectory>
                  <user>${glassfish.user}</user>
                  <adminPassword>${glassfish.adminPassword}</adminPassword>
                  <domain>
                     <name>${glassfish.domain.name}</name>
                     <host>${glassfish.domain.host}</host>
                     <adminPort>${glassfish.domain.adminPort}</adminPort>
                  </domain>
                  <components>
                    <component>
                      <name>${project.artifactId}</name>  
                 <artifact>${project.build.directory}/${project.build.finalName}.war</artifact>
                    </component>
                  </components>
               </configuration>
               <executions>
                    <execution>
                <goals>
            <goal>deploy</goal>
            </goals>
            </execution>
        </executions>
         </plugin>
      </plugins>
    </build>
</profile>

这应该可以解决问题。您可以使用 maven 运行此配置文件: mvn glassfish:deploy -P production 或仅 mvn deploy -P production (因为我们在插件的执行部分中添加了目标部署)

使用上面的模型,您可以为每个环境(dev、acc、tst、prd)创建不同的配置文件,并使用不同的设置。例如,您可以创建一个开发人员配置文件,其中使用本地 glassfish 在其上部署和运行单元/集成测试。

人们常犯的错误是将进行远程部署的机器的设置与要安装部署的主机混淆。 glassfishDirectory 是您运行部署插件的位置。由于错误插件只是挂起,什么都不做,只是等待给人一种正在发生的印象。另一个错误是为远程部署指定密码文件而不是密码,这也不会导致任何结果。

关于maven - GlassFish 3 + Maven + 远程部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7499396/

相关文章:

glassfish - 在 GlassFish 上自动启动 JavaDB (Derby)

java - 努力学习 Spring : BeanCreationException: Error creating bean with name

java - 从 IntelliJ IDEA 运行 WebLogic 时找不到 `weblogic.Server`

java - 为什么使用 junit-jupiter(聚合器)执行测试而不使用单独的依赖项?

java - 来自InputStream的NoSuchMethodError : JsonFactory.

java - 通过 GlassFish 服务器使用 REST - 如何允许使用 HTML 输入更新列表并返回 JSON 对象?

logging - Glassfish v3 日志记录

java - 如何在 Maven 中设置 java-first webservice client-jar?

java - @WebFilter 未在我的 Glassfish 中处理

java - Glassfish - 从 32 位到 64 位操作系统的 Java EE 应用程序,不完整的数据库查询?