Получить версию реализации от WAR - PullRequest
0 голосов
/ 03 марта 2020

У меня есть веб-сервис, работающий на сервере Wildfly 8.1.0.

Файл WAR веб-сервиса содержит внутри файла MANIFEST.MF следующую строку:

Внедрение-версия : 1.0.32

Я хочу прочитать это с одной из конечных точек API. Я попробовал несколько вещей, найденных в inte rnet:

getClass().getPackage().getImplementationVersion()

Возвращает ноль. Также с библиотекой манифестов jcabi:

Manifests.read("Implementation-Version");

Возвращает 8.1.0.Final. Это заставляет меня думать, что на самом деле он читает файл MANIFEST Wildfly.

Как я могу прочитать, что находится в файле MANIFEST моего WAR?

1 Ответ

0 голосов
/ 03 марта 2020

Это то, что Spring Boot сделал для получения версии реализации из Jar .

Поскольку веб-архив можно представить так же, как Java ARchive ( и да, это использование заглавных букв преднамеренно), можно полагать, что для чтения манифеста было бы достаточно использовать класс JarFile.

Кроме того, потому что я не знаю где в вашем проекте Жизненный цикл этой WAR был бы, я не могу прописать ничего, кроме исходного кода, который был у Spring (на который есть полная ссылка). Вы должны прочитать файл в каком-то месте, а затем вы можете получить манифест из этого.

private static String getImplementationVersion(JarFile jarFile) throws IOException {
    return jarFile.getManifest().getMainAttributes().getValue(Attributes.Name.IMPLEMENTATION_VERSION);
}
...