O que out.absolute.dir significa em formiga?

0

Eu vejo em arquivos de compilação de projetos diferentes no Linux freqüentemente uso de out.absolute.dir e estou realmente curioso sobre o que isso significa exatamente. Eu escrevo um pequeno arquivo de compilação que mencionei nas seguintes linhas

<project name="Test_Ant_APK" default="print">
 <property name="cal.out.dir" location="${out.absolute.dir}"/> 
 <target name="print">
   <echo>p=${cal.out.dir}</echo>
 </target>
</project>

E quando eu executo esse arquivo de compilação na linha de comando, recebo essa saída

Buildfile: /home/jody/workspace/Test_Ant_APK/build.xml

print:

    [echo] p=/home/jody/workspace/Test_Ant_APK/${out.absolute.dir}
BUILD SUCCESSFUL

Total time: 0 seconds

Eu pouco confuso sobre a saída. Acho que devemos ter p=/home/jody/workspace/Test_Ant_APK como saída. Por que temos ${out.absolute.dir} no final da saída? O que isso significa? Este arquivo de compilação tem problema?

Onde out.absolute.dir aponta exatamente?

    
por jody abbot 18.03.2016 / 22:22

2 respostas

2

(isso começou como um comentário, mas ficou muito longo, então agora é uma resposta)

  1. out.absolute.dir não tem significado específico no Linux. Parece que é uma variável usada pelos seus scripts de construção do Ant. Se ocorrer com frequência em muitos scripts Ant não relacionados, provavelmente é apenas uma convenção comum usada por muitos usuários / desenvolvedores Ant (mas ainda completamente arbitrária, sem nenhum significado especial em si própria fora do Ant).

  2. ${out.absolute.dir} é apenas uma maneira de garantir que a variável seja usada sem ambiguidade pelo shell se outro texto o seguir imediatamente - por exemplo, ${out.absolute.dir}foo é tratado como a variável $out.absolute.dir seguido pelo texto literal foo , enquanto $out.absolute.dirfoo é tratado como uma variável totalmente diferente chamada $out.absolute.dirfoo (que provavelmente não existe e causará um erro no script ou, pior, fazer com que o script faça algo que não deveria, como escrever para /home/jody/workspace/Test_Ant_APK/ em vez de para um subdiretório de .../Test_Ant_APK )

  3. /home/jody/workspace/Test_Ant_APK/${out.absolute.dir} apenas acrescenta o valor da variável $out.absolute.dir a /home/jody/workspace/Test_Ant_APK/ .

  4. Para descobrir exatamente onde essa variável aponta, você precisará examinar minuciosamente os scripts de construção Ant para encontrar as linhas que atribuem um valor a ela. Sem uma cópia dos scripts, não podemos responder a isso. Sugiro executar grep 'out.absolute.dir.*=' em sua formiga e nos scripts de construção associados. $out.absolute.dir pode ser (e provavelmente é) construído a partir de outras variáveis, então você terá que procurar seus valores também.

É possível que a variável seja automaticamente definida pelo próprio Ant. Eu não conheço Ant em qualquer lugar perto o suficiente para dizer com certeza.

    
por 19.03.2016 / 03:30
0

Deixe-me tentar explicar isso com um exemplo:

Digamos que seu diretório inicial seja /home/jody

Vamos dizer que você tem um diretório em sua casa chamado work

Quando você registra im, você está automaticamente em seu diretório pessoal. Portanto, quando você executa:

cd work  #(*)

você pode se encontrar neste diretório work .

mas vamos supor que você está em algum outro diretório, fazendo outras coisas e você precisa ir para este diretório work . Nesse caso você corre

cd /home/jody/work   #(**)

.

(*) is a relative directory
(**) is an absolute directory

se você olhar a última linha antes da mensagem BUILD SUCCESSFUL , poderá ver que o caminho do diretório é absoluto. Eu não sei o seu processo de construção, mas parece que está dizendo que o caminho que você vê é o caminho absoluto, tanto quanto eu posso dizer.

    
por 18.03.2016 / 23:54

Tags