Nesse post, vou demonstrar como é possível ler o arquivo MANIFEST.MF da própria aplicação. Essa é uma implementação é muito simples, mas existe um importante detalhe.
Ao ler o MANIFEST.MF, o Java considera todos os jars disponíveis no classpath da aplicação. Por isso é importante criar algo que identifique o jar correto. Nesse exemplo vou considerar a propriedade Built-By.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | import java.net.URL; import java.util.Enumeration; import java.util.jar.Attributes; import java.util.jar.Manifest; public class ApplicationProperties { private static Manifest manifest; static { try { Enumeration<URL> resources = ApplicationProperties. class .getClassLoader() .getResources( "META-INF/MANIFEST.MF" ); while (resources.hasMoreElements()) { Manifest m = new Manifest(resources.nextElement().openStream()); if ( "YaW Tecnologia" .equalsIgnoreCase( m.getMainAttributes().getValue( "Built-By" ))) { manifest = m; break ; } } } catch (Exception e) { System.err.println( "Não foi possível ler o manifest do projeto: " +e.getMessage()); } } /** * @return null se não encontrar o arquivo. */ public static Manifest getManifestFile() { return manifest; } } |
Vale notar que a estratégia em usar o Built-By torna-se inválida quando existir mais do que um jar empacotado, por YaW Tecnologia, no classpath.
@edermag
No comments:
Post a Comment