【发布时间】:2013-11-27 13:48:47
【问题描述】:
我目前正在使用 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"));
干杯 金属仓鼠
【问题讨论】:
-
您能分享一下您实际的 ShrinkWrap 代码示例吗?
-
我已经编辑了我的问题。
-
同意,这不是预期的行为。您会在issues.jboss.org/browse/SHRINKWRAP 报告问题吗?更好的解决方法是 war.add(myJar, ArchivePaths.create("/"), ZipExporter.class) 以避免导出到文件系统。
标签: jboss-arquillian shrinkwrap