quinta-feira, novembro 27, 2008

Arquivo de build ANT genérico

Segue um arquivo ANT para build automatizado que fiz para um trabalho na faculdade. Serve para projetos simples, onde o código fonte fica na pasta /src, as libs em /lib. Será criado um .zip com os arquivos .jar do programa, das libs, e do código fonte na pasta do projeto. Arquivos criados temporariamente são apagados.
Basta criar um arquivo build.xml na raiz do projeto, e definir algumas variáveis no arquivo antes de executar.

Observação: apesar de uma parte do código não aparecer por causa do layout, basta selecionar tudo que a cópia sairá correta.


<?xml version="1.0" encoding="iso-8859-1" ?>
<project name="build" default="zip" basedir=".">

<!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->
<!-- nome do programa -->
<property name="app.name" value="scheduler" />
<!-- classe principal do programa -->

<property name="main.class" value="br.ufsc.ine5616.scheduler.MainScheduler" />
<!-- classpath: definir todas as libs, pois o JRE não aceita wildcards -->
<property name="classpath" value="lib/forms-1.2.1.jar lib/looks-2.2.1.jar" />

<!-- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -->



<!-- diretorio de fontes -->
<property name="src" value="${basedir}/src" />
<!-- diretorio de libs -->

<property name="lib" value="${basedir}/lib" />

<!-- diretorios temporarios -->
<property name="build" value="${basedir}/classes" />

<property name="jar" value="${basedir}/jar" />
<property name="dist" value="${basedir}/dist" />


<tstamp>
<format property="timestamp" pattern="dd-MMM-yyyy HH:mm:ss" />
</tstamp>

<target name="create" description="Creates output folders">

<echo>[${app.name}] Create</echo>
<mkdir dir="${build}" />
<mkdir dir="${jar}" />

<mkdir dir="${dist}" />
</target>

<target name="compile" depends="create" description="Compiles the source">

<echo>[${app.name}] Compile</echo>
<javac srcdir="${src}" destdir="${build}" >
<classpath>

<fileset dir="${lib}">
<include name="**/*.jar" />
</fileset>
</classpath>
</javac>

</target>

<target name="jar" depends="compile" description="Creates the jar">
<echo>[${app.name}] Jar</echo>

<jar destfile="${jar}/${app.name}.jar" basedir="${build}">
<manifest>
<attribute name="Implementation-Title" value="${app.name}"/>

<attribute name="Main-Class" value="${main.class}"/>
<attribute name="Sealed" value="true"/>
<attribute name="Class-Path" value="${classpath}"/>

<attribute name="Created-On" value="${timestamp}"/>
<attribute name="Created-By" value="${user.name}"/>
</manifest>

</jar>
</target>

<target name="deploy" depends="jar" description="Deploys projects and /lib to /dist">
<echo>[${app.name}] deploy</echo>

<copy todir="${dist}/${app.name}" overwrite="yes">
<fileset dir="${jar}" includes="${app.name}.jar"/>

</copy>
<copy todir="${dist}/${app.name}/lib" overwrite="yes">
<fileset dir="${basedir}/lib" includes="*.jar" />

</copy>
</target>

<target name="deploy-src" description="Deploys the source files to a .jar file">
<echo>[${app.name}] deploy - src</echo>

<jar destfile="${jar}/${app.name}-src.jar" basedir="${src}">
<manifest>
<attribute name="Implementation-Title" value="${app.name}"/>

<attribute name="Created-On" value="${timestamp}"/>
<attribute name="Created-By" value="${user.name}"/>
</manifest>

</jar>
<copy todir="${dist}/${app.name}" overwrite="yes">
<fileset dir="${jar}" includes="${app.name}-src.jar"/>

</copy>
</target>

<target name="zip" depends="deploy, deploy-src" description="Creates a .zip with the app">
<echo>[${app.name}] Zip</echo>

<delete file="${app.name}.zip" />
<zip destfile="${app.name}.zip" basedir="${dist}" update="true" />

<ant antfile="${basedir}/build.xml" target="clean" />
</target>

<target name="clean" description="Cleans the output directories">

<echo>[${app.name}] Clean</echo>
<delete dir="${build}" />
<delete dir="${jar}" />

<delete dir="${dist}" />
</target>

</project>

Nenhum comentário: