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