【问题标题】:Shrinkwrap addAsLibrary() add library to wrong pathShrinkwrap addAsLibrary() 将库添加到错误的路径
【发布时间】: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


【解决方案1】:

实际上 ShrinkWrap 正在执行您的要求:将 /WEB-INF/lib/myJar.jar 添加到 lib 目录。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 2013-08-01
    • 2010-11-17
    相关资源
    最近更新 更多