Чтение файла манифеста весеннего загрузочного приложения - PullRequest
0 голосов
/ 07 января 2019

Я работаю над многомодульным загрузочным приложением Java Spring. Структура выглядит следующим образом.

module 1 (packaging: pom)
   submodule 1.1 (packaging: jar)
   submodule 1.2 (packaging: jar)

module 2 (packaging: pom)
   submodule 2.1 (packaging: jar)
   submodule 2.2 (packaging: jar)

webapplication (packaging: war)
   use submodule jars as dependencies

Модуль webapplication содержит все REST API s. Предполагается, что один из API REST считывает файл MANIFEST.MF внутри файла war и предоставляет некоторую информацию, связанную с развернутым приложением.

Следующий код используется для чтения файла MANIFEST.MF. (ручная работа прямо здесь)

 InputStream input = getClass().getClassLoader().getResourceAsStream("META-INF/MANIFEST.MF");
 Manifest manifest = new Manifest(input); //java.util.jar.Manifest
 Attributes attrs = manifest.getMainAttributes();

Задача

Когда приложение запускается с помощью команды spring-boot:run, содержимое, которое я могу найти в attrs, полностью отличается от того, что я вижу в файле MANIFEST.MF внутри войны. Это должно быть чтение из другого файла манифеста.

Вопросы

  1. Я загружаю файл MANIFEST неправильно? Нужно ли использовать servletContext() для загрузки файла?
  2. Вероятно, приведенный выше код читает из первого файла JAR, найденного в classpath. Каков наилучший способ найти файл манифеста только для моего развернутого файла war? Я еще не опробовал jcbi-manifests пакет. Решит ли это проблему?
...