В настоящее время я пишу некоторые интеграционные тесты с Arquillian. Теперь я застрял в странной проблеме:Shrinkwrap addAsLibrary() добавить библиотеку в неправильный путь
У меня есть .war архив и вы хотите добавить к нему библиотеку .jar. Я делаю это с помощью myWar.addAsLibrary (myJar). Однако, как этого myJar затем находится в
myWar
\_ WEB-INF/lib/WEB-INF/lib/myJar.jar
вместо
myWar
\_ WEB-INF/lib/myJar.jar
Я сделал обходной путь, который экспортирует банку в файловой системе, и добавляет его так:
myWar.addAsLibrary(new File("/home/metalhamster/myJar.jar"),
new BasicPath("/WEB-INF/lib/myJar.jar"));
Кто-нибудь знает, в чем проблема? Возможно, это ошибка ShrinkWrap?
EDIT:
То, что я пробовал:
// 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
Не могли бы вы поделиться конкретный пример Shrinkwrap кода? –
Я отредактировал свой вопрос. – metalhamster
Согласитесь, этого не ожидается. Вы сообщили о проблеме на странице https://issues.jboss.org/browse/SHRINKWRAP? Лучшим обходным решением будет war.add (myJar, ArchivePaths.create ("/"), ZipExporter.class), чтобы избежать экспорта в файловую систему. –