2013-11-27 2 views
0

В настоящее время я пишу некоторые интеграционные тесты с 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

+0

Не могли бы вы поделиться конкретный пример Shrinkwrap кода? –

+0

Я отредактировал свой вопрос. – metalhamster

+0

Согласитесь, этого не ожидается. Вы сообщили о проблеме на странице https://issues.jboss.org/browse/SHRINKWRAP? Лучшим обходным решением будет war.add (myJar, ArchivePaths.create ("/"), ZipExporter.class), чтобы избежать экспорта в файловую систему. –

ответ

0

Ac В то же время ShrinkWrap делает то, что вы просите: добавьте /WEB-INF/lib/myJar.jar в каталог lib.

Чтобы исправить это удалить /WEB-INF/lib/:

myWar.addAsLibrary(new File("/home/metalhamster/myJar.jar"), 
        new BasicPath("myJar.jar")); 
Смежные вопросы