Formiga - Projetos de construção

Agora que aprendemos sobre os tipos de dados no Ant, é hora de colocar esse conhecimento em ação. Vamos construir um projeto neste capítulo. O objetivo deste capítulo é construir um arquivo Ant que compila as classes java e as coloca na pasta WEB-INF \ classes.

Considere a seguinte estrutura de projeto -

  • Os scripts do banco de dados são armazenados no db pasta.

  • O código-fonte java é armazenado no src pasta.

  • As imagens, js, META-INF, estilos (css) são armazenados no war pasta.

  • Os JSPs são armazenados no jsp pasta.

  • Os arquivos jar de terceiros são armazenados no lib pasta.

  • Os arquivos da classe java são armazenados no WEB-INF\classes pasta.

Este projeto forma o Hello World Aplicativo de fax para o restante deste tutorial.

C:\work\FaxWebApplication>tree
Folder PATH listing
Volume serial number is 00740061 EC1C:ADB1
C:.
+---db
+---src
.  +---faxapp
.  +---dao
.  +---entity
.  +---util
.  +---web
+---war
   +---images
   +---js
   +---META-INF
   +---styles
   +---WEB-INF
      +---classes
      +---jsp
      +---lib

Aqui está o build.xml necessário para este projeto. Vamos considerá-lo peça por peça.

<?xml version = "1.0"?>
<project name = "fax" basedir = "." default = "build">
   <property name = "src.dir" value = "src"/>
   <property name = "web.dir" value = "war"/>
   <property name = "build.dir" value = "${web.dir}/WEB-INF/classes"/>
   <property name = "name" value = "fax"/>

   <path id = "master-classpath">
      <fileset dir = "${web.dir}/WEB-INF/lib">
         <include name = "*.jar"/>
      </fileset>
      
      <pathelement path = "${build.dir}"/>
   </path>

   <target name = "build" description = "Compile source tree java files">
      <mkdir dir = "${build.dir}"/>
      
      <javac destdir = "${build.dir}" source = "1.5" target = "1.5">
         <src path = "${src.dir}"/>
         <classpath refid = "master-classpath"/>
      </javac>
   </target>
 
   <target name = "clean" description = "Clean output directories">
      <delete>
         <fileset dir = "${build.dir}">
            <include name = "**/*.class"/>
         </fileset>
      </delete>
   </target>
</project>

Primeiro, vamos declarar algumas propriedades para as pastas source, web e build.

<property name = "src.dir" value = "src"/>
<property name = "web.dir" value = "war"/>
<property name = "build.dir" value = "${web.dir}/WEB-INF/classes"/>

Neste exemplo -

  • src.dir refere-se à pasta de origem do projeto onde os arquivos de origem java podem ser encontrados.

  • web.dir refere-se à pasta de origem da web do projeto, onde você pode encontrar os JSPs, web.xml, css, javascript e outros arquivos relacionados à web

  • build.dir refere-se à pasta de saída da compilação do projeto.

Propriedades podem se referir a outras propriedades. Conforme mostrado no exemplo acima, obuild.dir propriedade faz uma referência ao web.dir propriedade.

Neste exemplo, o src.dir refere-se à pasta de origem do projeto.

O alvo padrão do nosso projeto é o compilealvo. Mas primeiro vamos olhar para oclean alvo.

O destino limpo, como o nome sugere, exclui os arquivos da pasta de construção.

<target name = "clean" description = "Clean output directories">
   <delete>
      <fileset dir = "${build.dir}">
         <include name = "**/*.class"/>
      </fileset>
   </delete>
</target>

O master-classpath contém as informações do classpath. Nesse caso, inclui as classes na pasta build e os arquivos jar na pasta lib.

<path id = "master-classpath">
   <fileset dir = "${web.dir}/WEB-INF/lib">
      <include name = "*.jar"/>
   </fileset>
   
   <pathelement path = "${build.dir}"/>
</path>

Finalmente, o destino de construção para construir os arquivos. Em primeiro lugar, criamos o diretório de construção, se ele não existir. Em seguida, executamos o comando javac (especificando jdk1.5 como nossa compilação de destino). Fornecemos a pasta de origem e o caminho de classe para a tarefa javac e solicitamos que solte os arquivos de classe na pasta de construção.

<target name = "build" description = "Compile main source tree java files">
   <mkdir dir = "${build.dir}"/>
   
   <javac destdir = "${build.dir}" source = "1.5" target = "1.5" debug = "true"
      deprecation = "false" optimize = "false" failonerror = "true">
      <src path = "${src.dir}"/>
      <classpath refid = "master-classpath"/>
   </javac>
</target>

A execução de Ant neste arquivo compila os arquivos de origem java e coloca as classes na pasta de construção.

O seguinte resultado é o resultado da execução do arquivo Ant -

C:\>ant
Buildfile: C:\build.xml

BUILD SUCCESSFUL
Total time: 6.3 seconds

Os arquivos são compilados e colocados no build.dir pasta.