2013-11-27 3 views
0

현재 Arquillian과의 통합 테스트를하고 있습니다. 이제 이상한 문제에 봉착했습니다.Shrinkwrap addAsLibrary() 잘못된 경로에 라이브러리 추가

.war 아카이브가 있고 .jar 라이브러리를 추가하려고합니다. myWar.addAsLibrary (myJar)를 사용하여이 작업을 수행합니다.

myWar.addAsLibrary(new File("/home/metalhamster/myJar.jar"), 
        new BasicPath("/WEB-INF/lib/myJar.jar")); 
: 그러나,이 같은 myjar 인이 다음

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

대신

myWar 
\_ 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

+0

당신이 당신의 실제 쉬 링크 랩 코드 예제를 공유 할 수 있을까요? –

+0

내 질문을 편집했습니다. – metalhamster

+0

동의합니다. 이는 예상 된 동작이 아닙니다. https://issues.jboss.org/browse/SHRINKWRAP에서 문제를보고 하시겠습니까? 더 나은 해결 방법은 war.add (myJar, ArchivePaths.create ("/"), ZipExporter.class)를 사용하여 파일 시스템으로의 내보내기를 방지하는 것입니다. –

답변

0

행 ShrinkWrap은 묻고있는 것을 수행하고 있습니다 : /WEB-INF/lib/myJar.jar을 lib 디렉토리에 추가하십시오.

이 제거 해결하려면 /WEB-INF/lib/ :

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