Pergunta

Hoje eu tive que adicionar uma tarefa para um arquivo Apache Ant. A linha de comando deve ter sido algo como

myprogram --param1 --param2 path\somefile 2> path\logfile

O problema com este foi que se eu usasse algo como o seguinte para este

<exec executable="$(myprogram)"
  <arg value="--param1">
  <arg value="--param2">
  <arg path="$(somefile)">
  <arg value="2>">
  <arg path="$(logfile)">
</exec>

Todos os argumentos foram citados, portanto, o comando ficou assim:

myprogram "--param1" "--param2" "path\somefile" "2>" "path\logfile"

que não é mau e especialmente agradável se você tiver espaços em sua arquivos / caminho, mas destrói o tubo para o arquivo de log (em vez disso, o programa acha que existem dois argumentos de arquivo adicionais "2>" e "caminho \ logfile") .

Eu trabalhei em torno deste chamando um script em lotes vez que só quer os arquivos como parâmetros, mas eu me perguntava: É possível fazer isso sem uma tal solução

?
Foi útil?

Solução

Quando você executa "meuprograma --param1 caminho --param2 \ somefile 2> caminho \ logfile", os argumentos para o fim do programa no "2>". redirecionamento de arquivo é uma operação de seu escudo, que não está sendo usado de dentro formiga. Se você olhar para a documentação para o formiga exec tarefa , você verá que suporta o redirecionamento através do saída atributo.

Outras dicas

Você já tentou <arg line="..." />?

A tarefa exec formiga tem um parâmetro de saída, onde você pode especificar o arquivo de log sem exigir a tubulação de linha de comando, combinado com o append parâmetro para determinar se o arquivo de saída deve ser substituído ou anexado a.

Eu tive um problema igual como o tópico arranque fez. Em uma linha de comando de execução java eu ??precisava para adicionar arquivos de origem como argumentos separados, não como um argumento com citações ao seu redor. Eu usei a tag <arg value="..." />, mas usando o <arg line="..." /> como nullptr sugeriu resolveu o meu problema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top