【问题标题】:changing maven cargo plugin deployment path更改 maven cargo 插件部署路径
【发布时间】:2011-06-11 09:50:22
【问题描述】:

我想让我的集成测试在 http://localhost:8080/messaging 上命中 cargo 的 tomcat,但 cargo (cargo-maven2-plugin:1.0.5) 更喜欢将我的消息传递项目部署为 /messaging-0.0.7-SNAPSHOT,如tomcat 管理控制台和 target\tomcat6x\webapps 目录中。

所以我尝试将这些行添加到 cargo 配置中,认为它将获取默认工件:

 <deployer>
  <deployables>
   <deployable>
     <properties>
     <context>/messaging</context>
    </properties>
   </deployable>
  </deployables>
 </deployer>

但事实并非如此。它甚至没有尝试,因为我在 target\tomcat6x\webapps 目录中看不到消息传递或消息传递-0.0.7-SNAPSHOT。

当我这样设置时也会发生同样的事情:

<configuration>
  <type>standalone</type>
 <wait>false</wait>
 <properties>
  <cargo.servlet.port>8080</cargo.servlet.port>
  <cargo.logging>high</cargo.logging>
 </properties>
 <deployer>
  <deployables>
   <deployable>
     <groupId>com.company.platform</groupId>
     <artifactId>messaging</artifactId>
     <type>war</type>
     <properties>
     <context>/messaging</context>
    </properties>
   </deployable>
  </deployables>
 </deployer>
</configuration>

这是完整的插件配置:

  <plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<executions>
 <execution>
  <id>start</id>
  <phase>pre-integration-test</phase>
  <goals>
   <goal>start</goal>
  </goals>
 </execution>
 <execution>
  <id>stop</id>
  <phase>post-integration-test</phase>
  <goals>
   <goal>stop</goal>
  </goals>
 </execution>
</executions>
<configuration>
  <type>standalone</type>
 <wait>false</wait>
 <properties>
  <cargo.servlet.port>8080</cargo.servlet.port>
  <cargo.logging>high</cargo.logging>
 </properties>
 <deployer>
  <deployables>
   <deployable>
     <properties>
     <context>/messaging</context>
    </properties>
   </deployable>
  </deployables>
 </deployer>
</configuration>

我的集成测试如下所示:

import junit.framework.TestCase;

import java.io.InputStream;
import java.net.URL;
import java.net.HttpURLConnection;
import java.sql.Time;

public class WebappTest extends TestCase
{
    public void testCallIndexPage() throws Exception
    {
        URL url = new URL("http://localhost:8080/messaging/");
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.connect();
        assertEquals(200, connection.getResponseCode());
        InputStream is = connection.getInputStream();
        System.out.println(connection.getContent().getClass());

    }
}

最好的方法是什么?知道它将成功部署为 hxxp://localhost:8080/messaging-0.0.7-SNAPSHOT,我可以更改测试,但是将工件版本拉入的快速方法是什么?

理想情况下,我希望 cargo 正确部署它,但不清楚如何。

【问题讨论】:

    标签: maven cargo maven-cargo


    【解决方案1】:

    来自Cargo Plugin Reference

    About WAR contexts
    
        Many containers have their specific files for redefining context roots (Tomcat 
    has context.xml, JBoss has jboss-web.xml, etc.). If your WAR has such a file, the 
    server will most probably use the context root defined in that file instead of the 
    one you specify using the CARGO deployer.
    

    你能解决这个问题吗?

    另外,我认为上下文名称不应以 / 开头。

    【讨论】:

    • 不是这样的。有 web.xml 但没有 context.xml
    【解决方案2】:

    Deployables 标签不应进入Deployer 标签:

      <deployables>
       <deployable>
         <properties>
         <context>/messaging</context>
        </properties>
       </deployable>
      </deployables>
    

    【讨论】:

      【解决方案3】:

      如何设置 finalName 属性?

      如果您在 POM 中设置 &lt;finalName&gt;messaging&lt;/finalName&gt;,这应该可以解决问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-11
        • 1970-01-01
        • 2015-06-14
        • 2011-07-06
        • 1970-01-01
        • 2010-11-26
        • 2021-12-20
        相关资源
        最近更新 更多