這是我想出的。它確實__LINE__
,但不是__FILE__
。呵呵:-(。
<target name="preprocess" description="Preprocess the source code">
<mkdir dir="${target.generated.dir}"/>
<copy todir="${target.generated.dir}" includeemptydirs="true" failonerror="true" verbose="true">
<fileset dir="${source.dir}">
<exclude name="${source.main.resources.dir}"/>
</fileset>
<filterchain>
<tokenfilter>
<filetokenizer/>
<scriptfilter language="beanshell" byline="true"><![CDATA[
import java.io.BufferedReader;
import java.io.StringReader;
int count = 1;
BufferedReader br = new BufferedReader(new StringReader(self.getToken()));
StringBuilder builder = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
builder.append(line.replace("\"__LINE__\"", Integer.toString(count))).append('\n');
count++;
}
self.setToken(builder.toString());
]]></scriptfilter>
</tokenfilter>
</filterchain>
</copy>
</target>
我敢肯定,你必須編寫自己的任務來實現這一點。請參閱http://ant.apache.org/manual/develop.html#writingowntask也許你可以延長現有的任務嗎? – 2010-08-16 12:26:21