0

1 つの antfile (ディレクトリ A にある「antfile_A」) をセットアップして、別の antfile (ディレクトリ B にある「antfile_B」) を呼び出そうとしています。

私の問題は、antfile_A から antfile_B を呼び出すときのすべてのファイル操作がディレクトリ A に対して相対的であるように見えることです。antfile_b のパスをディレクトリ A に対して相対的になるようにハードコードすることはできますが、antfile_B を単独で使用することはできません。

各antfileの先頭にbasedirを(「。」に)設定しようとしましたが、「。」antfile_A から antfile_B が呼び出されると、ディレクトリ A に解決されるようです。

Antfile が直接配置されている絶対ディレクトリを取得する方法はありますか? Pythonでは、次のようになります

os.path.abspath(os.path.dirname(__file__))

他の人はこの問題をどのように解決しますか? (または、ある antfile を別の antfile から呼び出す必要はないのでしょうか?) お知らせください。ありがとう!

4

1 に答える 1

6

を使用しant.fileます。この例では、ビルド ファイルの絶対パスを出力します。

<project name="MyProject" default="abspath" basedir=".">
  <target name="abspath">
    <echo message="${ant.file}"/>
  </target>
</project>

ant(デバッグ出力) フラグを付けて実行しようとすると-d、最初のターゲットが呼び出される前に設定され、その結果、ビルド ファイル内で使用できるプロパティが見つかります。

これは、上記のビルド ファイルが-dフラグ付きで実行されたときの出力から取得されます。

...
Setting ro project property: ant.file -> /Users/abc/xyz/build.xml
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Setting ro project property: ant.file.type -> file
Setting ro project property: ant.project.name -> MyProject
Setting ro project property: ant.project.default-target -> abspath
Setting ro project property: ant.file.MyProject -> /Users/abc/xyz/build.xml
Setting ro project property: ant.file.type.MyProject -> file
...

完全を期すために、次のように変数を作成して、ビルド スクリプトを含むディレクトリへのパスを取得できます。

<dirname property="my.project.dir" file="${ant.file}"/>
于 2013-10-31T21:05:25.710 に答える