Shrinkwrap addAsLibrary()将库添加到错误的路径

时间:2013-11-27 13:48:48

标签: jboss-arquillian shrinkwrap

我目前正在与Arquillian一起编写一些集成测试。现在我陷入了一个奇怪的问题:

我有一个.war存档,想要为它添加一个.jar库。我用myWar.addAsLibrary(myJar)做到这一点。然而,像这样myJar然后位于

myWar
 \_ WEB-INF/lib/WEB-INF/lib/myJar.jar

而不是

myWar
 \_ WEB-INF/lib/myJar.jar

我做了一个解决方法,将jar导出到文件系统并添加如下:

myWar.addAsLibrary(new File("/home/metalhamster/myJar.jar"), 
                   new BasicPath("/WEB-INF/lib/myJar.jar"));

有谁知道问题是什么?这可能是ShrinkWrap的错误吗?

<小时/> 修改

我尝试过:

// load original war
WebArchive myWar = ShrinkWrap.createFromZipFile(WebArchive.class, new File("../wgmdb-web/build/wgmdb-web.war"));

// extract jar from war
JavaArchive myJar = myWar.getAsType(JavaArchive.class, new BasicPath("/WEB-INF/lib/wgmdb-business.jar"));

/*
 * modify the jar
 */

// replace the jar with the modified version
myWar.delete(new BasicPath("/WEB-INF/lib/wgmdb-business.jar"));
myWar.addAsLibrary(myJar);

解决方法:

// export jar to file system
new ZipExporterImpl(myJar).exportTo(new File("/home/metalhamster/wgmdb/wgmdb-business.jar");

// load it again and add it to the war
war.addAsLibrary(new File("/home/metalhamster/wgmdb/wgmdb-business.jar"), 
                 new BasicPath("/WEB-INF/lib/wgmdb-business.jar"));

干杯 metalhamster

1 个答案:

答案 0 :(得分:0)

实际上ShrinkWrap正在按照您的要求进行操作:将/WEB-INF/lib/myJar.jar添加到lib目录中。

要解决此问题,请删除/WEB-INF/lib/

myWar.addAsLibrary(new File("/home/metalhamster/myJar.jar"), 
                   new BasicPath("myJar.jar"));