2017-10-11 25 views
1

私は、メインメソッドを持つjavaクラスのFile定義を持っています。Eclipse実行メニューとAntビルドファイルの両方から相対パスを使用して実行できるようにしたいと考えています。Antからの相対パスでJavaクラスを実行するにはどうすればよいですか?

Eclipseの実行メニューからmainメソッドを実行している場合にのみ機能します。

private static final File location = new File("./implementation/src/xml/data"); 

のAntで実行している場合にのみ機能します。

private static final File location = new File("./src/xml/data"); 

プロジェクトは、このように構成されています

MyProject 
    | 
    | 
implementation 
    |  | 
    |  | 
    src build.xml 

これはAntタスクです。

<target name="run"> 
    <java classname="test.XMLCreator" classpathref="compile-classpath" > 
     <classpath> 
      <pathelement location="${classes}" /> 
     </classpath> 
    </java> 
</target> 

これは、Antではビルドファイルの場所に相対的なパスで、Javaクラス内ではソースのルートディレクトリからの相対パスであるためです。

Antタスク内のベースディレクトリを上書きする方法はありますか?

答えて

0

これを行う方法はいくつかあります。おそらく最も簡単なのは、たとえば、あなたのjavaタスクでdir属性の相対値を指定することです:

<java classname="test.XMLCreator" classpathref="compile-classpath" dir=".." fork="true"> 

あなたはまた、他の副作用を持つことができる、仕事にそのためのforkを使用する必要があります。

多くのタスクでdir属性がサポートされていますが、ネストされたファイルセットを使用するものがあるため、ネストされた要素にディレクトリを指定する必要があります。

もう1つの方法は、antタスクを使用してターゲットを実行することです。そこに指定されたディレクトリは、ターゲット内のすべてのタスクのベースディレクトリとして使用されます。

+0

これはうまくいきましたが、fork = "true" –

関連する問題