我該如何使用其他Maven模塊的資源?我的目標是提供一個AbstractImportClass
以及要在特定的Maven模塊中導入的文件。並在擴展此類的其他模塊中使用此模塊。Maven使用來自其他模塊的資源?
比方說ModuleA
包含src/main/java/MyAbstractImportClass.java
和src/main/resources/MyImport.csv
我現在想用抽象進口類ModuleB
。或者說,我會擴展它,使用abstract-fileimport和一些自定義函數。 Then ModuleC
也使用摘要的導入和一些自定義函數。
問題是:抽象類中的導入符合reader
和InputStream
。當我只執行ModuleA時,一切都很好。
但是,當我試圖通過maven pom包含模塊,然後擴展模塊來調用導入,那麼我得到NullPointerException
在讀者使用的線路。
所以很明顯,我不能使用這種方式的外國模塊資源。
但我該如何利用這個?
更新:
模塊A:
src/main/java/path/to/MyClassA.java
src/main/resources/path/to/test.txt
abstract class MyClassA {
public static String TESTFILE = test.txt;
List<String> doImport(String filename) {
InputStream fileStream = resourceClass.getResourceAsStream(filename);
//some precessing
return list;
}
}
模塊B:
src/main/java/path/to/MyClassB.java
class MyClassB implements MyClassA {
List<String> list = doImport(TESTFILE);
}
如果我把MyClassB在同一目錄爲A,那麼一切工作正常。 如果我在自己的模塊中構建B,我會爲InputStream獲取NullPointer,這意味着找不到文件。
好吧,我的絕對路徑是:'de/my/path/to/Super/test.properties'?或開始'/ de/my ...'?如果Super類可以獲取包含在其相應資源/路徑/到/文件夾中的文件,那麼這將是足夠的抽象。 – membersound
可能是以「/ resource」開頭的/或相對路徑的完整路徑 – maximdim
是的,絕對類路徑路徑以「/」開頭。如果你想使用Super的相對路徑,只要確保使用'Super.class.getResourceAsStream()'而不是'getClass()。getResourceAsStream()'。後者是多態的,前者不是。 –