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 | < project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" < 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 > <!-- Defino alguma propriedades, que serao utilizadas para o Manifest --> < 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 > <!-- omiti os trechos com as dependencias --> </ dependencies > <!-- Url para o respositorio git (github), utilizada pelo buildnumber --> < scm > </ scm > <!-- Configuracoes (c/ plugins) para geracao do jar --> < build > < plugins > <!-- Plugin buildnumber, executado durante a fase validation --> < 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 jar --> < plugin > < groupId >org.apache.maven.plugins</ groupId > < artifactId >maven-jar-plugin</ artifactId > < version >2.1</ version > < configuration > < archive > < manifest > < addDefaultImplementationEntries >true</ addDefaultImplementationEntries > </ manifest > < manifestEntries > <!-- Atributos para o Manifest --> < Built-By >${user.name}</ Built-By > < Implementation-Title >${project.title}</ Implementation-Title > <!-- Aqui ele usa o buildNumber --> < 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
No comments:
Post a Comment