2012-06-29 68 views
0

我有一个为JBoss AS 7.1.x创建一些WAR和EAR文件的maven(多模块)项目。从Maven antrun插件运行货物

为了一个目的,我需要将一个生成的一个模块的EAR文件部署到一个新的JBoss实例并运行它,调用一些REST Web服务调用并阻止JBoss。然后我需要打包写入数据库的这些调用的结果。

目前,我正在尝试使用CARGO和maven ant run插件来执行此任务。

不幸的是,我不能让三个人(maven,ant run和CARGO)一起玩。我没有在货物的蚂蚁例子中使用的uberjar。我如何配置ant运行任务,以便货物ant任务可以创建,启动和部署我的JBoss?理想情况下,由maven2-plugin在另一个阶段解压缩和配置一个?

或者,有没有更好的方法来实现我创建数据库的目标?

我无法真正使用集成测试阶段,因为它在之后的包阶段执行。所以,我打算在使用ant run的编译阶段完成所有工作。

再次澄清:

我需要执行以下操作:启动JBoss;部署一个WAR;等到WAR的启动完成;部署EAR文件;等到EAR初始化它的数据库;在EAR实施的过程中调用一些Web服务;停止JBoss;打包数据库。

所有这些步骤都必须是严格连续。

+0

为什么不使用cargo2 maven插件而不是Antrun? – khmarbaise

+0

我需要执行以下操作:启动JBoss;部署一个WAR; *等待,直到WAR的启动完成;部署EAR文件;等到EAR初始化它的数据库;在EAR实施的过程中调用一些Web服务;停止JBoss;打包数据库。我怎么用cargo2-maven插件做这件事? – Frank

回答

1

The following part gives you an impression how to do that。你必须改变细节。在特定情况下,我使用Tomcat。这将下载Tomcat归档解压缩并在本地安装Tomcat ...

<plugin> 
    <groupId>org.codehaus.cargo</groupId> 
    <artifactId>cargo-maven2-plugin</artifactId> 
    <configuration> 
     <wait>false</wait> 
     <container> 
     <containerId>tomcat${tomcat.major}x</containerId> 
     <zipUrlInstaller> 
      <url>http://archive.apache.org/dist/tomcat/tomcat-${tomcat.major}/v${tomcat.version}/bin/apache-tomcat-${tomcat.version}.tar.gz</url> 
      <extractDir>${project.build.directory}/extract/</extractDir> 
      <downloadDir>${project.build.directory}/download/</downloadDir> 
     </zipUrlInstaller> 
     <output>${project.build.directory}/tomcat${tomcat.major}x.log</output> 
     <log>${project.build.directory}/cargo.log</log> 
     </container> 
     <configuration> 
     <home>${project.build.directory}/tomcat-${tomcat.version}/container</home> 
     <properties> 
      <cargo.logging>high</cargo.logging> 
      <cargo.servlet.port>9080</cargo.servlet.port> 
      <cargo.tomcat.ajp.port>9008</cargo.tomcat.ajp.port> 
     </properties> 
     </configuration> 
    </configuration> 
    <executions> 
     <execution> 
     <id>start-container</id> 
     <phase>pre-integration-test</phase> 
     <goals> 
      <goal>start</goal> 
      <goal>deploy</goal> 
     </goals> 
     <configuration> 
      <deployer> 
      <deployables> 
       <deployable> 
       <groupId>${project.groupId}</groupId> 
       <artifactId>mod-war</artifactId> 
       <type>war</type> 
       <pingURL>http://localhost:9080/mod-war</pingURL> 
       <pingTimeout>30000</pingTimeout> 
       <properties> 
        <context>mod-war</context> 
       </properties> 
       </deployable> 
      </deployables> 
      </deployer> 
     </configuration> 
     </execution> 
     <execution> 
     <id>stop-container</id> 
     <phase>post-integration-test</phase> 
     <goals> 
      <goal>stop</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 
+0

帮了很大忙。现在我只需要弄清楚现在就可以对多个部署进行排序,以及编译阶段的所有功能。 – Frank

+0

在编译阶段?那没有意义。我会在集成测试阶段这样做,并创建一个可以通过配置文件激活的单独模块。 – khmarbaise

+0

我需要在包装之前的某个阶段做到这一点。你推荐哪一个?集成测试绝对不起作用,或者它呢? – Frank