Existe uma tarefa ANT que execute um bloco apenas se um determinado arquivo existir? Eu tenho o problema de ter um script ant genérico que deve executar algum processamento especial, mas apenas se um arquivo de configuração específico estiver presente.
file
ant
build-automation
Mario Ortegón
fonte
fonte
Respostas:
Disponível e Condição
fonte
if
eunless
somente habilitam ou desabilitam o destino ao qual estão conectados, ou seja, as dependências do destino sempre são executadas. Caso contrário, não funcionaria para depender de um destino que define a propriedade que você está verificando.<Available>
está obsoleto. Eu usei isso:<target name="do-if-abc" if="${file::exists('abc.txt')}"> ... </target>
check: nant.sourceforge.net/release/0.85/help/functions/…<available>
está obsoleto? 2:${file::existst...}
parece não estar funcionando com o Ant (Apache ANT 1.9.7)Isso pode fazer um pouco mais de sentido da perspectiva da codificação (disponível com ant-contrib: http://ant-contrib.sourceforge.net/ ):
fonte
Desde o Ant 1.8.0, aparentemente também existem recursos
Em http://ant.apache.org/manual/Tasks/conditions.html
Eu estava refazendo o exemplo da boa resposta acima para esta pergunta e, então, achei isso
do manual ant em http://ant.apache.org/manual/properties.html#if+unless
Espero que este exemplo seja útil para alguns. Eles não estão usando recursos, mas provavelmente você poderia? .....
fonte
if="${file.exists}"
deve ser substituído porif="file.exists"
asif
eunless
verifique apenas a existência da propriedade pelo nome, não pelo valor.Eu acho que vale a pena referenciar esta resposta semelhante: https://stackoverflow.com/a/5288804/64313
Aqui está outra solução rápida. Existem outras variações possíveis usando a
<available>
tag:fonte
Marque Usando filtros de nome de arquivo, como
DB_*/**/*.sql
Aqui está uma variação para executar uma ação se existir um ou mais arquivos correspondentes a um filtro curinga. Ou seja, você não sabe o nome exato do arquivo.
Aqui, estamos procurando arquivos " * .sql " em qualquer subdiretório chamado " DB_ * ", recursivamente. Você pode ajustar o filtro às suas necessidades.
Nota: Apache Ant 1.7 e superior!
Aqui está o destino para definir uma propriedade se existirem arquivos correspondentes:
Aqui está um destino "condicional" que é executado apenas se existirem arquivos:
fonte
Você pode fazer isso solicitando a operação com uma lista de arquivos com nomes iguais ao (s) nome (s) necessário (s). É muito mais fácil e direto do que criar um alvo especial. E você não precisa de ferramentas adicionais, apenas o Ant puro.
Veja: FileSet .
fonte