0

Apache Antでディレクトリ内の各ファイルに対してJavaタスクを実行する方法は? <apply>実行可能ファイルの実行のみを許可しているようです。

4

2 に答える 2

0

次のように、実行可能な java.exe で apply を使用します。

<apply executable="path/to/java.exe">
  <arg value="..."/>
  <arg value="..."/>
   ...
  <fileset dir="..."/>
   ...
</apply>

または、for ループ、つまりFlakaを提供する AntAddon を使用します。Wiki の例/ファイル + ディレクトリを参照してください:
質問: Java ソースをコンパイルした後、対応するクラスを実行するにはどうすればよいですか?
解決策 : Java ソースを含むファイルセットを繰り返し処理し、replace 関数を使用して対応するクラス ファイルを呼び出します。

<project xmlns:fl="antlib:it.haefelinger.flaka">

  <property name="srcroot" value="path/to/srcrootdir"/>
  <property name="classroot" value="path/to/classrootdir"/>

  <!-- seek all classes with main method -->
  <fileset dir="${srcroot}" includes="**/*.java" id="mainclasses">
    <contains text="public static void main"/>
  </fileset>

  <!-- iterate over classes with main method and call
       corresponding classfile -->
  <fl:for var="file" in="split('${toString:mainclasses}', ';')">
    <fl:let>
      ; strip the '.java' extension
      file = replace(file, '', '.java')
      ; replace fileseparator with '.'
      ; when running on windows you have to use :
      ; replace(file, '\.', '${file.separator}${file.separator}')
      file = replace(file, '\.', '${file.separator}')
      </fl:let>
    <fl:echo>
      starting => #{file} in ${classroot}..
    </fl:echo>
    <java classname="#{file}">
      <classpath>
       <!--
         when using a fileset you'll get a
         java.util.zip.ZipException because you're
         referencing not jarfiles but classfiles
         therefore you've to use pathelement location
       -->
       <pathelement location="${classroot}"/>
      </classpath>
    </java>
  </fl:for>

</project>
于 2013-05-09T11:12:42.600 に答える