Apache Antでディレクトリ内の各ファイルに対してJavaタスクを実行する方法は? <apply>
実行可能ファイルの実行のみを許可しているようです。
質問する
307 次
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 に答える