私はLinuxのさまざまなプロジェクトのビルドファイルでよく使われるのを見ましたが、out.absolute.dir
これがまさに何を意味するのか本当に疑問に思います。私は次の行で述べた短いビルドファイルを書きました。
<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>
コマンドラインからこのビルドファイルを実行すると、次の出力が表示されます。
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
出力がちょっと混乱しています。私たちは出力をしなければならないと思いますp=/home/jody/workspace/Test_Ant_APK
。${out.absolute.dir}
出力の終わりになぜそのようなものがありますか?どういう意味ですか?このビルドファイルに問題がありますか?
正確にどこにout.absolute.dir
?
答え1
(コメントで始めたのに長すぎて答えになりました)
out.absolute.dir
Linuxでは特別な意味はありません。これはAntビルドスクリプトで使用される変数のように見えます。関連していない多くのAntスクリプトに頻繁に現れる場合、これはおそらく多くのAntユーザー/開発者が使用する一般的な規則です(ただし、まだ完全にランダムであり、Ant自体の外では特別な意味はありません)。${out.absolute.dir}
別のテキストが続く場合は、シェルがその変数を明示的に使用しているかどうかを確認する方法です。たとえば、リテラルテキストが後続の${out.absolute.dir}foo
変数として扱われるのは、まったく異なる変数(存在しない可能性がある)として扱われ、エラーが発生します。または、悪いことには、スクリプトを実行してはいけないこと(たとえば、書き込みの代わりにサブディレクトリへの書き込み)を実行させます。)$out.absolute.dir
foo
$out.absolute.dirfoo
$out.absolute.dirfoo
/home/jody/workspace/Test_Ant_APK/
.../Test_Ant_APK
/home/jody/workspace/Test_Ant_APK/${out.absolute.dir}
変数の値$out.absolute.dir
を/home/jody/workspace/Test_Ant_APK/
。この変数が指す場所を正確に見つけるには、Antビルドスクリプトを徹底的に調べて変数に値を割り当てる行を見つける必要があります。スクリプトのコピーがなければ、この質問に答えることはできません。
grep 'out.absolute.dir.*='
アリと関連するビルドスクリプトで実行することをお勧めします。$out.absolute.dir
他の変数で構成される可能性があるため、その値も参照する必要があります。
この変数はAnt自体によって自動的に定義できます。私は確かに知るためにAntについて十分に知りません。
答え2
たとえば、説明しましょう。
ホームディレクトリが次のと仮定します。/home/jody
家の下に次のようなディレクトリがあるとしましょう。work
ログインすると自動的にホームディレクトリに入ります。したがって、実行するとき:
cd work #(*)
このディレクトリに自分自身を見つけることができますwork
。
しかし、あなたが別のディレクトリにいて、別のことをしていて、そのwork
ディレクトリに行かなければならないとしましょう。この場合は、次を実行します。
cd /home/jody/work #(**)
。
(*) is a relative directory
(**) is an absolute directory
メッセージの前の最後の行を見ると、BUILD SUCCESSFUL
ディレクトリパスが絶対パスであることがわかります。私はあなたのビルドプロセスを知りませんが、私が知っている限り、あなたが見るパスは絶対パスであることを教えているようです。