O que é Ant?
A Apache Ant é uma ferramenta de geração baseada em Java. De acordo com o fundador original James Duncan Davidson, o nome desta ferramenta é o acrônimo de outra ferramenta interessante.
O que a formiga faz:
As ferramentas de geração são usadas no desenvolvimento de software para converter o código -fonte e outros arquivos de entrada em arquivos executáveis (e possivelmente em formatos de imagem do produto instalável). À medida que o processo de geração de aplicações se torna mais complexo, torna -se ainda mais importante garantir que as mesmas etapas de geração sejam usadas durante cada geração, ao mesmo tempo em que obtém o máximo de automação possível para gerar versões de geração consistente em tempo hábil.
Vantagens da formiga:
A formiga é uma ferramenta de construção baseada em Java. Em teoria, é um pouco semelhante a fazer em (UNIX) C, mas não tem falhas na marca. A versão mais recente é: Ant 1.8.4. Desde que já fizemos, Gnumake, Nmake, Jam e outras ferramentas de construção, por que precisamos de uma nova ferramenta de construção? Porque o autor original de Ant não pode tolerar as limitações e inconvenientes dessas ferramentas ao desenvolver software em várias plataformas (hardware). Ferramentas manchas são essencialmente baseadas em shell: calculam dependências e, em seguida, executam comandos (esses comandos não são muito diferentes dos comandos que você digita na linha de comando). Isso significa que você pode estender facilmente a ferramenta usando programas específicos de OS ou escrevendo novos programas (de comando); No entanto, isso também significa que você se limita a um sistema operacional específico ou tipos de SO específicos, como o UNIX.
A formiga é diferente. Ao contrário do modo de extensão com base nos comandos do shell, o Ant usa classes Java para estender. (Usuário) Não há necessidade de escrever comandos do shell. O arquivo de configuração é baseado no XML. Várias tarefas podem ser executadas chamando a árvore de destino. Cada tarefa é executada por um objeto que implementa uma interface de tarefa específica.
A Ant define as dependências entre os arquivos gerados, que usam classes Java de plataforma cruzada. Com a Ant, você pode escrever um arquivo de gerador único que opera de forma consistente em qualquer plataforma Java (porque a própria formiga é implementada no idioma Java), que é a maior vantagem da formiga
ANT gera análise de arquivos:
Ant não define sua própria sintaxe personalizada; Em vez disso, seus arquivos gerados são gravados no XML. Há um conjunto de elementos XML predefinidos que a ANT pode entender, e novos elementos também podem ser definidos para estender a funcionalidade de Ant. Cada arquivo de construção consiste em um único elemento de projeto, que por sua vez contém um ou mais elementos de destino. Um destino é uma etapa definida no processo de geração, que executa qualquer número de operações, como a compilação de um conjunto de arquivos de origem. E essas próprias operações são executadas por outras tags de tarefas dedicadas e, em seguida, essas tarefas serão agrupadas em elementos de destino individuais, conforme necessário. Todas as operações necessárias para um processo de única geração podem ser colocadas em um único elemento de destino, mas isso reduz a flexibilidade. Geralmente é preferível dividir essas operações em etapas de geração lógica, cada etapa contida em seu próprio elemento de destino. Isso permite que partes individuais do processo geral de geração sejam executadas sem necessariamente executar outras peças.
Por exemplo, chamando apenas determinados objetivos, você pode compilar o código -fonte do seu projeto sem precisar criar um arquivo de projeto instalável. O elemento do projeto de nível superior precisa conter um atributo padrão, que especifica o destino a ser executado se a ANT for chamada. Então você precisa usar o elemento de destino para definir o próprio alvo.
Aqui está um arquivo gerado básico:
<? xml versão = "1.0"?> <Project default = "init"> <name de destino = "init"> </target> </project>
Uso básico da formiga:
1. Configure variáveis de ambiente:
ANT_HOME: C: /nt-1.8 -----> Caminho do diretório de instalação/descompressão da Ant
Anexe ao caminho: c: /nt-1.8/bin -----> Caminho do diretório da bin em formigas
2. Confirme se a configuração da variável de ambiente abre com êxito a janela CMD e digite o comando: Ant:
Veja a seguinte tela:
Como a Ant precisa ter um arquivo Build.xml por padrão ao criar, existe o prompt acima, o que significa que o ambiente da Ant foi configurado com sucesso.
3. Crie uma pasta chamada Helloworld usando Ant:
Primeiro, você precisa editar Build.xml:
<? xml versão = "1.0"?> <Project default = "init"> <name de destino = "init"> <span style = "cor:#ff0000;"> <mkdir dir = "helloworld"> </span> </ -target> </project>
Em seguida, mude para o diretório em que o arquivo Build.xml está localizado, entre na Ant e, se houver um prompt da seguinte maneira, a criação da pasta será bem -sucedida:
(A parte init é equivalente à saída do log)
4. Você também pode usar a ANT para criar diretórios de arquivos aninhados de vários níveis que só precisam ser modificados no arquivo Build.xml:
<? xml versão = "1.0"?> <Project default = "init"> <name de destino = "init"> <span style = "cor:#ff0000;"> <mkdir dir = "helloworld/a/b/c"/> </span> </ -target> </project>
5. Exclua o diretório de vários níveis como acima:
<? xml versão = "1.0"?> <Project default = "init"> <name de destino = "init"> <span style = "cor:#ff0000;"> <delete dir = "helloworld"/> </span> </target> </project>
NOTA: Aqui o caminho precisa apenas entrar no caminho do diretório de nível mais alto, que é exatamente o poder da ferramenta Ant:
Se você deseja excluir um diretório em Java, poderá excluí -lo, a menos que o diretório esteja vazio, caso contrário, precisará excluí -lo gradualmente.
Usando a ferramenta ANT, você pode excluir diretamente as pastas contendo subdiretas.
Vejamos outra amostra de arquivo XML:
<? xml versão = "1.0"?> <Project default = "init" name = "Project"> <Descrição> Um projeto simples, introduzindo o uso de tags de descrição em arquivos de construção de formigas. </description> <!-XML Comentários também podem ser usados-> <Nome do destino = "init" description = "Inicialize o banco de dados de argônio"> <!-Execute as etapas de inicialização aqui-> </vogle> </ject>
Como pode ser visto, os comentários XML podem ser usados em todo o arquivo de construção para maior clareza. Além disso, a Ant define seu próprio elemento de descrição e atributos de descrição, que podem ser usados para fornecer anotações mais estruturadas.
Atributo de formiga:
As propriedades na formiga são semelhantes às variáveis nas linguagens de programação, e todas elas têm nomes e valores. No entanto, diferentemente das variáveis usuais, uma vez definidas, as propriedades na formiga não são alteradas; Eles são imutáveis, assim como objetos de string no idioma java. Isso pode parecer restritivo a princípio, mas é seguir o princípio simples de Ant: afinal, é uma ferramenta de gerador, não uma linguagem de programação. Se você tentar atribuir um novo valor a uma propriedade existente, isso não será considerado um erro, mas a propriedade ainda manterá seu valor existente
Definição e uso de propriedades:
<propriedade name = "metal" value = "beryllium"/>
Para fazer referência a esta propriedade em outras partes do arquivo gerado, use a seguinte sintaxe:
Copie o código da seguinte forma: $ {metal}
Por exemplo, para usar esse valor que faz parte do valor de outra propriedade, escreva o rótulo da seguinte maneira
<propriedade name = "metal-database" value = "$ {metal} .db"/>
Atributo da localização:
Os atributos são frequentemente usados para fazer referência a arquivos ou diretórios em sistemas de arquivos, mas para plataformas que usam diferentes separadores de caminho (por exemplo, / e /), isso pode causar problemas ao abranger diferentes plataformas. O atributo de localização da Ant foi projetado especificamente para incluir caminhos do sistema de arquivos de maneira independente da plataforma. Use o local em vez de valor como este:
<Propriedade name = "Database-File" Location = "Archive/Bathabases/$ {Metal} .db"/> Os caracteres separados pelo caminho usados para o atributo de localização serão convertidos no formato correto da plataforma atual; E como o nome do arquivo é relativo, ele é considerado relativo ao diretório base do projeto. Também podemos escrever facilmente o seguinte:
<Propriedade name = "Database-File" Location = "Archive/Bathabases/$ {Metal} .db"/>Ambas as versões desta tag terão o mesmo comportamento em plataformas diferentes.
Definindo dependências:
A geração de um projeto geralmente requer muitas etapas - por exemplo, primeiro você precisa compilar o código -fonte e depois empacotá -lo em um arquivo de arquivo java (jar). Muitas dessas etapas têm um pedido claramente definido - por exemplo, você não pode empacotar o arquivo de classe até que o compilador o gerem a partir do código -fonte. Ao contrário de especificar sequencialmente metas, a Ant adota uma abordagem mais flexível para definir dependências. Cada objetivo é definido com base em todos os outros objetivos que devem ser alcançados antes que possam ser executados. Isso é alcançado usando o atributo depende do elemento de destino
<Nome do destino = "init"/> <name de destino = "preprocess" dependes = "init"/> <name de destino = "compile" depende = "init, pré -processamento"/> <nome do destino "
Este método permite que você execute o processo de geração em qualquer estágio do projeto; A Ant primeiro executará a fase de pré -requisito definida. No exemplo acima, se Ant concluir a etapa de compilação, ele determinará que os dois objetivos do INIT e do pré -processamento precisam ser executados primeiro. O destino init não depende de nenhum outro alvo, por isso será executado primeiro. Ant verifica o pré -processamento e descobre que depende do destino init; Como o último foi executado, Ant não o executará novamente, então ele começa a executar o destino de pré -processo. Finalmente, a própria tarefa de compilação pode ser executada.
Observe que a ordem em que os alvos aparecem no arquivo gerado não é importante: a ordem em que a execução é determinada exclusivamente pelo atributo depende.