首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GlassFish 3+ Maven +远程部署

GlassFish 3+ Maven +远程部署
EN

Stack Overflow用户
提问于 2011-09-21 20:02:15
回答 2查看 9.7K关注 0票数 8

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

代码语言:javascript
复制
mvn package xxx:deploy

我认为只有cargo插件支持GlassFish 3,对吧?

我在配置方面遇到了问题。

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

EN

回答 2

Stack Overflow用户

发布于 2012-10-06 02:31:16

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

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

代码语言:javascript
复制
<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>

接下来将此配置文件放入您的活动配置文件中:

代码语言:javascript
复制
<activeProfiles>
    <activeProfile>production-config</activeProfile>
</activeProfiles>

在maven项目pom.xml中,创建一个配置文件,并将maven-glassfish-plugin添加到您的配置文件列表中:

代码语言:javascript
复制
<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运行此配置文件(因为我们已经在插件的executions部分中添加了goal deploy )

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

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

票数 7
EN

Stack Overflow用户

发布于 2011-09-24 01:26:52

据我所知和所能找到的,只有货物交付(或部署,在这种情况下)。

这是一个在Maven OSGi WAR项目上测试的示例:

代码语言:javascript
复制
<build>
    <plugins> 
        ...
        <plugin>
            <groupId>org.codehaus.cargo</groupId>
            <artifactId>cargo-maven2-plugin</artifactId>
            <version>1.1.2</version>
            <configuration>
                <container>
                    <containerId>glassfish3x</containerId>
                    <type>remote</type>
                </container>
                <configuration>
                    <type>runtime</type>
                    <properties>
                        <cargo.hostname>myhostname</cargo.hostname>
                        <cargo.remote.username>myusername</cargo.remote.username>
                        <cargo.remote.password>mypassword</cargo.remote.password>
                    </properties>
                </configuration> 
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.glassfish.deployment</groupId>
                    <artifactId>deployment-client</artifactId>
                    <version>3.2-b06</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

正如您所看到的,诀窍在于deployment-client依赖项。

为了完整起见,您只需使用mvn package cargo:deploy,而Bob是您的叔叔。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7499396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档