Используйте ANT для обновления номера сборки и вставки в исходный код

В моем файле build.xml я увеличиваю номер версии сборки в файле свойств вот так :

<target name="minor">
     <propertyfile file="build_info.properties">
         <entry key="build.minor.number" type="int" operation="+" value="1" pattern="00" />
         <entry key="build.revision.number" type="int" value="0" pattern="00" />
     </propertyfile>
</target>

У меня также есть похожие записи для основной версии и версии. (Из Номера сборки: major.minor.revision )

Это отлично работает. Теперь я хотел бы взять этот увеличенный номер сборки и вставьте его в мой исходный код:

    //Main.as
    public static const VERSION:String = "@(#)00.00.00)@";

Используя:

<target name="documentVersion">
    <replaceregexp file="${referer}" match="@\(#\).*@" replace="@(#)${build.major.number}.${build.minor.number}.${build.revision.number})@" />
</target>

Теперь эта разновидность работает.Она действительно заменяет версию , но с устаревшим номером версии.Поэтому всякий раз, когда я запускаю сценарий ANT, build_info.properties обновляется до правильной версии, но в моем файле исходного кода используется предварительно обновленное значение.

Я повторил эхо, чтобы проверить, действительно ли я увеличиваю номер сборки, прежде чем вызывать замену, и я заметил это эхо:

<echo>${build.minor.number}</echo> 
//After updating it still shows old non updated value here but the new value in the property file.

Итак, есть ли способ получить обновленное значение в файле свойств, чтобы я мог его использовать вставить в мой исходный код?

Ура

10
задан Community 23 May 2017 в 12:01
поделиться

1 ответ

Итак, потратив несколько часов на то, чтобы решить эту проблему, я разместил этот вопрос и через 20 минут разобрался с ней.

Проблема заключалась в том, что в верхней части моего файла сборки было написано:

<property file="build_info.properties"/>

Я предполагаю, что это было вызвано скопингом и тем, что свойства неизменяемы, поэтому я никогда не мог обновить значение. Удалив эту строку и добавив следующую, все заработало отлично:

<target name="injectVersion">
     <property file="build_info.properties"/>
     <replaceregexp file="${referer}" match="@\(#\).*@" replace="@(#)${build.major.number}.${build.minor.number}.${build.revision.number})@" />
</target>
11
ответ дан 4 December 2019 в 00:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: