Ant - Tipos de Dados

Ant fornece vários tipos de dados predefinidos. Não confunda o termo "tipos de dados" com aqueles que estão disponíveis na linguagem de programação; em vez disso, considere-os como um conjunto de serviços já integrados ao produto.

Os seguintes tipos de dados são fornecidos pelo Apache Ant.

Conjunto de arquivos

Os tipos de dados do conjunto de arquivos representam uma coleção de arquivos. É usado como um filtro para incluir ou excluir arquivos que correspondem a um determinado padrão.

Por exemplo, consulte o código a seguir. Aqui, o atributo src aponta para a pasta de origem do projeto.

O conjunto de arquivos seleciona todos os arquivos .java na pasta de origem, exceto aqueles que contêm a palavra 'Stub'. O filtro de distinção entre maiúsculas e minúsculas é aplicado ao conjunto de arquivos, o que significa que um arquivo com o nome Samplestub.java não será excluído do conjunto de arquivos.

<fileset dir = "${src}" casesensitive = "yes">
   <include name = "**/*.java"/>
   <exclude name = "**/*Stub*"/>
</fileset>

Conjunto de padrões

Um conjunto de padrões é um padrão que permite filtrar arquivos ou pastas facilmente com base em certos padrões. Os padrões podem ser criados usando os seguintes metacaracteres -

  • ? - Corresponde a apenas um caractere.

  • * - Corresponde a zero ou muitos caracteres.

  • ** - Corresponde a zero ou muitos diretórios recursivamente.

O exemplo a seguir descreve o uso de um conjunto de padrões.

<patternset id = "java.files.without.stubs">
   <include name = "src/**/*.java"/>
   <exclude name = "src/**/*Stub*"/>
</patternset>

O conjunto de padrões pode então ser reutilizado com um conjunto de arquivos da seguinte forma -

<fileset dir = "${src}" casesensitive = "yes">
   <patternset refid = "java.files.without.stubs"/>
</fileset>

Lista de arquivos

O tipo de dados filelist é semelhante ao conjunto de arquivos, exceto as seguintes diferenças -

  • filelist contém listas explicitamente nomeadas de arquivos e não suporta curingas.

  • tipo de dados filelist pode ser aplicado para arquivos existentes ou não existentes.

Vejamos o seguinte exemplo do tipo de dados filelist. Aqui, o atributowebapp.src.folder aponta para a pasta de origem do aplicativo da web do projeto.

<filelist id = "config.files" dir = "${webapp.src.folder}">
   <file name = "applicationConfig.xml"/>
   <file name = "faces-config.xml"/>
   <file name = "web.xml"/>
   <file name = "portlet.xml"/>
</filelist>

Conjunto de filtros

Usando um tipo de dados de conjunto de filtros junto com a tarefa de cópia, você pode substituir determinado texto em todos os arquivos que correspondem ao padrão com um valor de substituição.

Um exemplo comum é anexar o número da versão ao arquivo de notas de versão, conforme mostrado no código a seguir.

<copy todir = "${output.dir}">
   <fileset dir = "${releasenotes.dir}" includes = "**/*.txt"/>
   
   <filterset>
      <filter token = "VERSION" value = "${current.version}"/>
   </filterset>
</copy>

Neste Código -

  • O atributo output.dir aponta para a pasta de saída do projeto.

  • O atributo releasenotes.dir aponta para a pasta de notas de versão do projeto.

  • O atributo current.version aponta para a pasta da versão atual do projeto.

  • A tarefa de cópia, como o nome sugere, é usada para copiar arquivos de um local para outro.

Caminho

o pathtipo de dados é comumente usado para representar um caminho de classe. As entradas no caminho são separadas por ponto e vírgula ou dois pontos. No entanto, esses caracteres são substituídos no tempo de execução pelo caractere separador de caminho do sistema em execução.

O classpath é definido para a lista de arquivos jar e classes no projeto, conforme mostrado no exemplo abaixo.

<path id = "build.classpath.jar">
   <pathelement path = "${env.J2EE_HOME}/${j2ee.jar}"/>
   
   <fileset dir = "lib">
      <include name = "**/*.jar"/>
   </fileset>
</path>

Neste código -

  • O atributo env.J2EE_HOME aponta para a variável de ambiente J2EE_HOME.

  • O atributo j2ee.jar aponta para o nome do arquivo J2EE jar na pasta base J2EE.