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:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <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> <url>http://maven.apache.org</url> <!-- 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> <site>http://www.yaw.com.br</site> </properties> <dependencies> <!-- omiti os trechos com as dependencias --> </dependencies> <!-- Url para o respositorio git (github), utilizada pelo buildnumber --> <scm> <connection>scm:git:https://github.com/yaw/swing-jdbc-crud.git</connection> </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