If no ant

10 respostas
jpacheco

Pessoal alguem sabe como posso utilizar if no ant?

Tipo hoje existe a tag , porem estou tentando fazer um if com ela mas não estou conseguindo.

Procurei por tags if no ant e achei alguns codigos, porem estes não funcionam em meu ant.
Talvez por que falta alguma biblioteca, porem procurei pelas mesmas e não encontrei…

Tipo no meu caso eu pretentdo colocar um
onde o usuario(desenvolvedor) ira escolher a ação que deseja realizar.

Por exemplo escolher entre deploy, voltar versão, cancelar, etc…

Alguem sabe como posso fazer isso?

Obrigado e abraço.

10 Respostas

Andre_Fonseca

oi

vc tentou algo parecido com isso?

<if> <equals arg1="${foo}" arg2="bar" /> <then> <echo message="The value of property foo is bar" /> </then> <else> <echo message="The value of property foo is not bar" /> </else> </if>

http://ant-contrib.sourceforge.net/tasks/tasks/if.html

Andre_Fonseca

tenta o dowload do jar, deve funcionar

http://ant-contrib.sourceforge.net/

http://sourceforge.net/projects/ant-contrib/files/

jpacheco

Cara tentei isso e não rolou.

apareceu o seguinte erro:

C:\workspace\ProjetoSVN\ant\build.xml:19: Problem: failed to create task or type if
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.

Eu não tenho de criar uma taskdef para o if?

Att

Andre_Fonseca

Oi

Vamos la

  1. Se você ainda não tem instalado o ANT na sua máquina faça isso

  2. Copie o ant-contrib-xx.jar para pasta /lib do ANT

  3. Você precisa sim definir um task-def para usar no seu projeto

<taskdef resource=“net/sf/antcontrib/antcontrib.properties”>
<classpath>
<pathelement location="/usr/share/java/lib/ant-contrib-0.3.jar"/>
</classpath>
</taskdef>

Fazendo os passos acima funcionou aquele exemplo para mi

Buildfile: /home/afonseca/workspace/teste/build.xml
default:
[echo] The value of property foo is not bar
BUILD SUCCESSFUL
Total time: 325 milliseconds

t+

http://ant-contrib.sourceforge.net/#install

Andre_Fonseca

oi
vc testou? funcionou? desistiu?

jpacheco

Cara testei e funcionou perfeitamente
era a definição da task que faltava.

Não tinha certeza se necessitada pous utilizo outras bibliotecas
(por exemplo que fornecem os comandos scp e sshexec) as quais não necessito definir task para utilizar estes comandos.

Muito obrigado.

Aproveitando a deixa, você não sabes me dizer como posso inserir uma quebra de linha
quando utilizo o echo do ant para logar e jogar em um arquivo?

Por exemplo:

Tipo eles são logados todos na mesma linha.

Você não sabes me dizer como posso quebrar a linha?
Com “\n” como fazemos no java eu não consigo.

De qualquer forma muito obrigado André, sua dica ja me foi de extrema ajuda.

Abraço

Andre_Fonseca

jpacheco:
Cara testei e funcionou perfeitamente
era a definição da task que faltava.

Não tinha certeza se necessitada pous utilizo outras bibliotecas
(por exemplo que fornecem os comandos scp e sshexec) as quais não necessito definir task para utilizar estes comandos.

Muito obrigado.

Aproveitando a deixa, você não sabes me dizer como posso inserir uma quebra de linha
quando utilizo o echo do ant para logar e jogar em um arquivo?

Por exemplo:

<echo file="${arquivo.log}" append=“true” message="- prepara para fazer backup dos arquivos…" />
<echo file="${arquivo.log}" append=“true” message="- realiza o deploy…" />

Tipo eles são logados todos na mesma linha.

Você não sabes me dizer como posso quebrar a linha?
Com “\n” como fazemos no java eu não consigo.

De qualquer forma muito obrigado André, sua dica ja me foi de extrema ajuda.

Abraço

Oi

Tenta assim

&lt;echo file="${arquivo.log}" append="true" message="- prepara para fazer backup dos arquivos...${line.separator}" /&gt; &lt;echo file="${arquivo.log}" append="true" message="- realiza o deploy...${line.separator}" /&gt;

jpacheco

André

eu tentei desta forma ai no caso meu ${line.separator} seria o \n,
mas não funcionou assim como funciona no java, então
minha dúvida seria qual separador funcionaria para quebrar a linha no ant?

Abraço

Andre_Fonseca

oi

para mim funciona o line.separtor

uma dica - não sei se você sabe - no eclipse você pode debugar o build.xml, coloque um break-point no arquivo e rode ele em debug, ai você pode fazer um watch na variavel line.separator e ver o valor dela…

veja se ajuda…

jpacheco

André testei novamente aqui e funcionou perfeitamente com o ${line.separator}.

Muito obrigado.

Abraço

Criado 28 de agosto de 2009
Ultima resposta 1 de set. de 2009
Respostas 10
Participantes 2