Pobieranie numeru wersji implementacji z pliku Manifestu
Jak obiecałem już jakiś czas temu, pokażę w jaki sposób można pobrać numer wersji, który umieściłem w pliku MANIFEST.MF pod atrybutem Implementation-Version. Wcześniej jednak, chciałbym zwrócić Waszą uwagę na listę wszystkich dostępnych atrybutów oraz specyfikację klasy Package, z której będę korzystać.
W czasie lektury zwróciliście zapewne uwagę na zbieżność nazw niektórych atrybutów z nazwami metod klasy Package. Zbieżność ta w żadnym razie nie jest przypadkowa. I tak oto, do wyciągnięcia wartości atrybutu Implementation-Version posłuży nam metoda Package#getImplementationVersion().
Poniższy kod pokazuje, jak może wyglądać metoda zwracająca numer wersji naszej implementacji:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
* This method is used for retriveing Implementation-Version value as
* {@link String} from MANIFEST.MF from Jar file that is containing
* {@code clazz}.
*
* @param clazz
* @return {@link String} representing Implementation-Version value
*/
public static String getImplementationVersion(Class clazz) throws IllegalArgumentException {
if (clazz == null) {
throw new IllegalArgumentException("Class must be not-null");
}
Package pkg = clazz.getPackage();
if (pkg != null) {
return pkg.getImplementationVersion();
} else {
log.warn("There is no package for class " + clazz);
}
return null;
}
Należy zawsze pamiętać, aby pobierać wartości atrybutów pliku Manifestu za pośrednictwem klasy znajdującej się w tym samym pliku Jar co plik Manifest z którego chcemy pobierać te wartości!
Voila!