Я пытаюсь скомпилировать файл, который берет его версию из константы внутри моих исходных файлов.
У меня есть такая настройка (или хотя бы значащие биты):
задачи / compile.xml
<project name="Compile">
<target name="check.version">
<script language="javascript">
regex = /VERSION.+?"([\d\.]+)";/;
r = new java.io.BufferedReader(new java.io.FileReader(new java.io.File(file)));
line = r.readLine();
while ( (line = r.readLine()) != null) {
m = regex.exec(line);
if (m) {
project.setProperty( "project.version" , m[1] );
break;
}
}
r.close();
</script>
<echo>${ant.project.name}-${project.version}</echo> <!-- = Fail-0.2 -->
</target>
</project>
И build.xml:
<project name="Fail">
<import file="${basedir}/build/tasks/compile.xml"/>
<target name="test">
<antcall target="check.version">
<param name="file" value="${basedir}/Source.as"/>
</antcall>
<echo>${project.version}</echo> <!-- = ${project.version} -->
<echoproperties></echoproperties>
</target>
</project>
Итак, похоже, что свойство, установленное сценарием, определено только локально в этой цели, если я укажу другую цель в том же проекте («Компиляция»), оно также не узнает об этом свойстве.
Я также пытался установить в xml-проекте "Compile", но цель все равно не будет перезаписана.
Так как я могу получить доступ к этому свойству, сгенерированному сценарием? Или есть другой способ сделать что-то подобное?
Мне бы очень хотелось сохранить эту часть в отдельном xml, так как это делает скрипт сборки проекта намного чище.
Спасибо!