Мы используем следующий метод (и он очень похож на ответ Кевина, но я могу подтвердить, что он работает):
фрагмент из моего build.xml: он использует два файла jar (svnkit и svntask) вместо svn.exe (поэтому он работает кроссплатформенно) - эти jar-файлы также регистрируются через svn, поэтому вы не можете их потерять или удалить.
<!-- SVN revision stuff -->
<typedef resource="com/googlecode/svntask/svntask.xml">
<classpath>
<fileset dir="${basedir}/util">
<include name="svnkit.jar"/>
<include name="svntask.jar"/>
</fileset>
</classpath>
</typedef>
<target name="revision">
<svn><info path="${basedir}" revisionProperty="revision" /></svn>
<echo>${revision}</echo>
</target>
<!-- /SVN revision stuff -->
Теперь у нас есть ревизия в свойстве, которое мы включаем в задачу mxmlc в качестве условной переменной компилятора:
<mxmlc file="${src.dir}/@{appfile}.@{ext}"
output="@{output}/@{appfile}.swf"
debug="@{debug}"
target-player="${version_major}"
optimize="true"
locale=""
use-network="true"
>
<define name="compile::REVISION" value="'${revision}'"/>
[... rest snipped]
</mxmlc>
Затем вы можете использовать эту переменную в AS:
var version:String = "1.0."+compile::REVISION;
Чтобы код работал и во Flash Builder, вам необходимо добавить следующую строку в дополнительные аргументы компилятора:
-define+=compile::REVISION,'dev'
Таким образом, ваш код разработки будет иметь ревизию 'dev', что указывает на то, что он не обязательно был создан из фиксированной версии кода.