如何使用其他 Maven 模块的资源?我的目标是在特定的 Maven 模块中提供一个AbstractImportClass
以及要导入的文件。并在扩展此类的其他模块中使用此模块。
假设ModuleA
containssrc/main/java/MyAbstractImportClass.java
和src/main/resources/MyImport.csv
我现在想在ModuleB
. 或者更确切地说,我将扩展它,使用 abstract-fileimport 和一些自定义函数。然后ModuleC
还使用摘要的导入和一些自定义功能。
问题是:抽象类中的导入与reader
and一起使用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,这意味着找不到文件。