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.
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