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