2013-07-23 89 views
6

我想從Arquillian的另一個Maven項目部署現有的戰爭。 我已經解決了戰爭,並將其複製到我的Arquillian項目的目標目錄中。Arquillian:使用ShrinkWrap從現有的戰爭中創建WebArchive

嘗試下面創建它:

@Deployment 
public static WebArchive createDeployment() { 

    return (WebArchive) ShrinkWrap.create(ZipImporter.class, "MyWarToTest.war").importFrom(
      new File("target/MyWarToTest.war")); 

} 

但是,我得到一個類轉換異常。

產生的原因:java.lang.ClassCastException: org.jboss.shrinkwrap.impl.base.importer.zip.ZipImporterImpl不能 投地org.jboss.shrinkwrap.api.Archive

我在猜測我應該試圖以不同的方式創造戰爭?

回答

11

我找到了答案。 我需要將.as(WebArchive.class)添加到調用的最後。
它需要看起來像這樣:

@Deployment 
public static WebArchive createDeployment() { 

    return ShrinkWrap.create(ZipImporter.class, "payloadPlan.war").importFrom(new File("target/payloadPlan.war")) 
      .as(WebArchive.class); 

} 

我在這裏找到了答案: http://zezutom.blogspot.com/2012/08/going-mobile-with-arquillian.html

13

添加我的2美分。更快(並且結果相同)是以下方法:

@Deployment 
public static WebArchive createDeployment() { 
    return ShrinkWrap.createFromZipFile(WebArchive.class, new File("target/payloadPlan.war")); 
}