Как я могу использовать ресурсы из других модулей maven? Моя цель - предоставить AbstractImportClass
, а также импортируемые файлы в определенном модуле maven. И используйте этот модуль в других модулях, расширяющих этот класс.Maven использует ресурсы из других модулей?
Скажем ModuleA
содержит src/main/java/MyAbstractImportClass.java
и src/main/resources/MyImport.csv
Я теперь хочу использовать абстрактный класс импорта в ModuleB
. Вернее, я буду расширять его, использовать abstract-fileimport и несколько пользовательских функций. Затем ModuleC
также использует импорт тезисов и некоторые пользовательские функции.
Проблема: импорт в абстрактном классе идет с reader
и InputStream
. Когда я выполняю только ModuleA, все в порядке.
Но когда я попытался включить модуль через maven pom, а затем расширьте модуль, чтобы вызвать импорт, тогда я получаю NullPointerException
в строке, где используется читатель.
Таким образом, я не могу использовать ресурсы внешнего модуля таким образом.
Но как я мог вместо этого использовать это?
Update:
Модуль 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 в той же директории, как А, то все работает отлично. Если я создаю B в собственном модуле, я получаю NullPointer для InputStream, что означает, что файл не найден.
Итак, мой абсолютный путь: 'de/my/path/to/Super/test.properties'? или с началом '/ de/my ...'? Было бы достаточной абстракцией, если Super-класс может извлечь файл, который содержится в соответствующих папках ресурсов/пути/в/файл. – membersound
Может быть полный путь, начинающийся с/или относительный путь, начиная с местоположения вашего «resourceClass». – maximdim
Да, абсолютные пути pathpath начинаются с '/'. Если вы хотите использовать относительный путь от Super, просто обязательно используйте 'Super.class.getResourceAsStream()', а не 'getClass(). GetResourceAsStream()'. Последний является полиморфным, первый - нет. –