Início > Programação > Como utilizar o Maven para Gerar o Número da Versão

Como utilizar o Maven para Gerar o Número da Versão

É possível utilizar o Ant para gerar um código que identifique a versão do .war gerada como descrevi aqui. Nesse artigo, vou demonstrar como fazer isso utilizando o Maven e a data de geração do pacote.

Primeiro, você precisará das seguintes propriedades em seu pom.xml:

        <!-- Data e hora de geração da versão -->
        <timestamp>${maven.build.timestamp}</timestamp>

        <!-- Formato da data -->
        <maven.build.timestamp.format>dd-MM-yyyy HH:mm:ss</maven.build.timestamp.format>

Em seguida, você deve definir uma variável que armazenará o valor da data formatada após a geração da versão e que será copiada para o MANIFEST.MF. Chamei a variável de “Build-Date”:

        <Build-Date>${maven.build.timestamp}</Build-Date>

O trecho importante do pom.xml se parecerá com esse:

    <properties>
        <jboss.home>${JBOSS_HOME}\standalone\deployments</jboss.home>
        <timestamp>${maven.build.timestamp}</timestamp>
        <maven.build.timestamp.format>dd-MM-yyyy HH:mm:ss</maven.build.timestamp.format>
    </properties>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <warName>teste</warName>
                    <archive>
                        <manifestEntries>
                            <Build-Date>${maven.build.timestamp}</Build-Date>
                        </manifestEntries>
                    </archive>
                    <outputDirectory>${jboss.home}</outputDirectory>
                </configuration>
           </plugin>
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-compiler-plugin</artifactId>
               <inherited>true</inherited>
               <configuration>
                   <source>1.7</source>
                   <target>1.7</target>
               </configuration>
           </plugin>
       </plugins>
    </build>

O MANIFEST.MF gerado ficará assim:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: user
Build-Jdk: 1.7.0_x
Build-Date: 10-09-2015 11:00:00

Por último, você deve escrever um código para ler nossa propriedade do MANIFEST.MF e disponibilizá-la para a aplicação:

public class Util {

        static class ManifestInfo {
                private static Properties properties;
                static Properties getProperties() {
                    if (properties == null) {
                        ServletContext servletContext = (ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext();
                        properties = new Properties();
                        try {
                            properties.load(servletContext.getResourceAsStream("/META-INF/MANIFEST.MF"));
                        } catch (IOException e) {
                        }
                     }
                     return properties;
                 }
             }
             public static final String getBuildDate() {
                 return ManifestInfo.getProperties().getProperty("Build-Date");
             }
        }
Anúncios
Categorias:Programação Tags:
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: