Загрузка файла из jar зависимостей внутри maven junit - PullRequest
3 голосов
/ 07 декабря 2010

Я использую Maven 2.1.0 и у меня есть проект с несколькими модулями. Примеры модулей:

  • SPR-ресурсы
  • спр-общий

spr-common зависит от spr-ресурсов

spr-resources содержит только файлы, без классов.

spr-common имеет джунит, в который нужно загрузить файл из jar spr-resources.

Я использовал:

String fileName = getClass().getResource("/jaskeyfile.3DES").getFile();
is = getClass().getClassLoader().getResourceAsStream(fileName);
is.read(data);

И это работает, когда я запускаю тест в IntelliJ, но когда я делаю mvn test, происходит сбой с NullPointerException, когда я пытаюсь выполнить read () для него.

Почему это происходит? Он должен читать файл из зависимости просто отлично.

Кроме того, pom.xml в spr-common зависит от spr-ресурсов (пробовал как с проверкой области, так и без нее)

EDIT: Я пробовал также

getClass().getClassLoader().getResourceAsStream("/jaskeyfile.3DES");

без удачи.

EDIT2: Данный файл существует в результирующем банке, поэтому я думаю, он должен быть доступен.

Ответы [ 2 ]

3 голосов
/ 08 декабря 2010

Тщательно проверьте все

Вот список для работы:

  1. Файл jaskeyfile.3DES находится в src/main/resources внутри spr-ресурсовmodule
  2. Ваш локальный репозиторий содержит последнюю версию spr-resources-xyz-SNAPSHOT.jar (или вы выпустили его / прямо его версировали), и вы определенно использовали для него установку mvn clean
  3. Модуль spr-common ссылается на правильную (именованную) версию spr-resources-xyzjar (область компиляции будет видна как на пути к классам тестирования, так и на пути к компиляции)true тогда ваш getClass().getResourceAsStream("/jaskeyfile.3DES") вызов должен работать.Я использую эту структуру все время в своих проектах, чтобы вы не просили луну или что-то здесь.
1 голос
/ 07 декабря 2010

Я полагаю, что проблема может быть с косой чертой. Я думаю, что оба из них должны работать:

  • getClass().getResourceAsStream("/jaskeyfile.3DES")
  • getClass().getClassLoader().getResourceAsStream("jaskeyfile.3DES")

Class.getResourceAsStream() принимает путь относительно каталога пакета класса, поэтому он принимает начальную косую черту.

ClassLoader.getResourceAsStream() уже использует абсолютный путь, поэтому не принимает начальный слеш.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...