2016-08-12 25 views
1

我在我們的JAVA EE應用程序服務器的商業代碼中遇到問題。 我們訪問src/main/resources文件夾內的一些文件與arquillian從主文件夾中添加資源

InputStream inputStream = Thread 
       .currentThread() 
       .getContextClassLoader() 
       .getResourceAsStream(filePath); 

在生產這個工作,但我想考哪用我的Arquillian測試中該功能代碼的一部分。我們使用shrinkwrap生成test.war

WebArchive testArchive = ShrinkWrap.create(WebArchive.class, "test.war") 
       .addPackages(true, "ch.microtronic.evending") 
       .addAsWebInfResource("wildfly-ds.xml") 
       .setWebXML(new File("src/main/webapp/WEB-INF/web.xml")) 
       .addAsResource("test-persistence.xml", "META-INF/persistence.xml"); 

我有一些麻煩,從src/main/resources添加資源,test.war

我只能從src/test/resources添加文件。

我們的目錄結構如下:

src 
|__main 
| |__java 
| |__resources 
| |__webapp 
| 
|__test 
    |__java 
    |__resources 

我該怎麼辦?

+0

你試過像'.addAsResource( 「SRC /主/資源」, 「/資源」) ;'? –

+0

是的。問題是'addAsResource()'裏面的開始路徑已經在'src/test/resources'裏面了。 –

回答

0

如果您想要添加不在src/test/resources中的文件,只需使用重載版本addAsResource(File, String)而不是addAsResource(String, String)。對於你的例子,看起來像:

.addAsResource(new File("src/main/resources/test-persistence.xml"),"META-INF/persistence.xml"); 

我剛剛解決了我的代碼中的類似問題,所以這種方法絕對有效。

0

要包括一個子樹我使用以下內容。

說你在類路徑中需要的所有文件src/main/resources/db/migration下爲db/migration/FILE_NAME

Path resources_dir = Paths.get("src", "main", "resources"); 
Path migrations_dir = resources_dir.resolve(Paths.get("db", "migration")); 
Files.walk(migrations_dir) 
    .forEach((p) -> jar.addAsResource(p.toFile(), 
            resources_dir.relativize(p).toString())); 

相對化

相關問題