Início > build > Como Utilizar o Manifest para Armazenar o Número Dinâmico da Versão

Como Utilizar o Manifest para Armazenar o Número Dinâmico da Versão

Você pode fazer o Ant gerar automaticamente o número da versão e armazená-lo em algum lugar para que a aplicação possa acessar. Nesse exemplo, mostrarei como utilizar o arquivo MANIFEST.MF para armazenar a versão no padrão abaixo:

Versão 1.2.3 build: 28-09-2013 12:00:00

1. No build.properties, defina as propriedades abaixo:

#Numero da versão que sera gerado pelo Ant
version={NUMERO_DA_VERSAO_GERADO}

#Numero da release utilizado para compor o numero da versao
release.number=1.2.3

2. No deploy descriptor, crie a task que gerará o número da versão. Note que a parte variável do número da nossa versão é composta pela data e hora atuais:

	<target name="generate.version.number">
		<tstamp>
			<format property="build.time" pattern="dd-MM-yyyy hh:mm:ss" unit="hour" />
		</tstamp>
		<property name="version.number" value="Versão ${release.number} build: ${build.time}" />
		<replaceregexp file="${project.dir}${file.separator}build.properties" match="(version[ \t]*=[ \t]*)+.*$" byline="true" replace="\1${version.number}" />
	</target>

3. Ainda no deploy descriptor, utilize o valor da propriedade “version” gerada na task anterior e atualizada no arquivo “build.properties” como valor da propriedade “Versao” do nosso Manifest:

        <manifest file="MANIFEST.MF">
                <attribute name="Versao" value="${version}"/>
        </manifest>

4. Na aplicação, basta ler a propriedade “Versao” do arquivo MANIFEST.MF. Essa não é a forma mais correta de ler o Manifest, mas para esse uso é o suficiente:

	public static String getVersion() throws IOException{
		ServletContext servletContext = (ServletContext) FacesContext
				.getCurrentInstance().getExternalContext().getContext();
		Properties prop = new Properties();
		prop.load(servletContext.getResourceAsStream("/META-INF/MANIFEST.MF"));
		return prop.getProperty("Versao");
	}

O exemplo anterior pressupõe que desenvolvedores estão gerando versões da aplicação em suas próprias máquinas. Dessa forma, a data e hora da geração da versão facilita o deploy em ambientes compartilhados. Trabalhando com integração contínua, o ideal é utilizar a task “buildnumber” para incrementar um número em um arquivo e utilizá-lo para compôr o número da versão em nossa task.

Referências:

1. How do I read the manifest file for a webapp running in apache tomcat?
2. Automatically build number generation in ANT

Anúncios
  1. Nenhum comentário ainda.
  1. 12/09/2015 às 3:15 PM

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: