Pergunta

Eu ainda estou aprendendo a usar ANT bem, e eu queria entender se há alguma maneira razoável para fazer tarefas de arquivo nele, semelhante ao Rake e fazer:

http://martinfowler.com/articles/rake.html#FileTasks

"Com um arquivo que você está se referindo a arquivos reais em vez de nomes de tarefas. 'Build / dev / rake.html' So e 'dev / rake.xml' são arquivos reais. O arquivo HTML é a saída dessa tarefa e o arquivo XML é a entrada você pode pensar em uma tarefa arquivo como dizendo ao sistema de compilação como fazer o arquivo de saída -. na verdade, esta é exatamente a noção de make - que lista os arquivos de saída que você quer e fazer dizer como fazê-los.

Uma parte importante da tarefa de arquivo é que ele não é executado a menos que você precisa executá-lo. Os olhares sistema de compilação para os arquivos e apenas executa a tarefa se o arquivo de saída não existe ou é data de modificação é mais cedo do que o arquivo de entrada. tarefas de arquivo, portanto, funcionam muito bem quando você está pensando de coisas em um arquivo por arquivo. "

Assim, em outras palavras, digamos que eu quiser executar um binário de costume e eu só quero que binário para executar, se qualquer um dos arquivos mudaram. Isto está relacionado com este pergunta, mas eu não quero correr o binário em tudo, não só passar uma parte do conjunto de arquivos (ou seja, não é único no conjunto de arquivos e eu não quero que a ferramenta seja executada em todos).

A solução ideal seria também não ser uma coisa loooong, mas poderia ser facilmente aplicado a qualquer alvo -? Talvez usando algum ANT JavaScript ou tarefa personalizada

Foi útil?

Solução

Use ant-contrib tarefa outofdate. Ele tem exatamente as propriedades que você está pedindo. Aqui está website ant-contrib .

Aqui é um modelo de como integrá-lo em sua construção:

<taskdef
  resource="net/sf/antcontrib/antlib.xml"
>
  <classpath>
    <pathelement location="${ant-contrib.jar}"/>
</taskdef>

<outofdate>
 <sourcefiles path="dev/rake.xml"/>
 <targetfiles path="build/dev/rake.html"/>
 <sequential>
   ... do your work here ...
   ... will only run if rake.html is older than rake.xml ...
 </sequential>
</outofdate>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top