O arquivo
MANIFEST.MF tem como finalidade armazenar atributos sobre o artefato (
JAR /
WAR /
EAR ...). Informações como a versão, as dependências, desenvolvedores, a
classe de entrada (para
JARs executáveis), ou seja, qualquer informação relevante para a instalação e uso do artefato.
Por padrão, quando um
JAR é gerado o
MANIFEST.MF é criado automaticamente, dentro da pasta
META-INF. Nesse post eu demonstro como utilizar o Maven para criar o
MANIFEST.MF com informações e dinâmicas e pré-definidas. Uma informação dinâmica seria, por exemplo, a identificação do último commit realizado no sistema de controle de fontes, o git.
O plugin do Maven
buildnumber gera um identificador de build (
build number) acessando informações do SCM (svn / git / mercurial). Por exemplo, durante o desenvolvimento pode existir diversar iterações (e commits) para a mesma versão
1-0-SNAPSHOT. Com o plugin é possível aumentar a granularidade na identificação da versão/build do artefato.
Uma vez que o valor do
build number é gerado, o plugin
jar acessa essa informação para criar o artefato. Esse é o plugin em que definimos a estrutura do
MANIFEST.MF que o Maven deve utilizar.
A seguir um exemplo de
pom.xml com a url do git e as definições para o Maven criar o
MANIFEST.MF:
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | < modelVersion >4.0.0</ modelVersion >
< groupId >br.com.yaw.sjc</ groupId >
< artifactId >swing-jdbc-crud</ artifactId >
< version >0.0.1-SNAPSHOT</ version >
< packaging >jar</ packaging >
< name >swing-jdbc-crud</ name >
< properties >
< project.build.sourceEncoding >UTF-8</ project.build.sourceEncoding >
< project.title >Demo Swing c/ JDBC</ project.title >
< user.name >YaW Tecnologia</ user.name >
</ properties >
< dependencies >
</ dependencies >
< scm >
</ scm >
< build >
< plugins >
< plugin >
< groupId >org.codehaus.mojo</ groupId >
< artifactId >buildnumber-maven-plugin</ artifactId >
< version >1.1</ version >
< executions >
< execution >
< phase >validate</ phase >
< goals >
< goal >create</ goal >
</ goals >
</ execution >
</ executions >
</ plugin >
< plugin >
< groupId >org.apache.maven.plugins</ groupId >
< artifactId >maven-jar-plugin</ artifactId >
< version >2.1</ version >
< configuration >
< archive >
< manifest >
< addDefaultImplementationEntries >true</ addDefaultImplementationEntries >
</ manifest >
< manifestEntries >
< Built-By >${user.name}</ Built-By >
< Implementation-Title >${project.title}</ Implementation-Title >
< Implementation-Build >${buildNumber}</ Implementation-Build >
< Implementation-Site >${site}</ Implementation-Site >
</ manifestEntries >
</ archive >
</ configuration >
</ plugin >
</ plugins >
</ build >
</ project >
|
Esse
pom.xml foi baseado no projeto demontração
Swing e JDBC, desenvolvido pela YaW.
@edermag