2017-02-21 12 views
2

Короче говоря, я не могу сделать вычисление на основе свойства в моем файле сборки.Вычислить свойство арифметически

Скажем, у меня есть:

< <property name="basedir" value="${project.basedir}" /> --Current значение 73

Как я могу знать, предыдущий 3 строит (72,71 и 70) ИЛИ как можно вычислить эти значения (на основе basedir)?

Я попытался (игнорировать дополнение):

  1. <property name="basedir" value="${project.basedir}+1" /> < --But него concats значение: 73+1

  2. <property name="basedir" value="${project.basedir+1}" /> < --But это просто неправильно: build_${env.BUILD_NUMBER+1}

Сценарий: Удалить старые версии (сохранить некоторые релизы в случае отката)

PS: Дубликат ссылка недействительна, потому что это развертывание с помощью Phing не ANT

ответ

1

Вы можете использовать adhoc-task для этого:

<?xml version="1.0"?> 
    <project default="main" phingVersion="2.11.0"> 
    <property name="basedir" value = "73"/> 
    <adhoc-task name="increment"><![CDATA[ 
    class increment extends Task { 
     private $value; 

     function setvalue($value) { 
      $this->value = $value; 
     } 
    function setProperty($property) { 
     $this->property = $property; 
     } 

    function main() { 
     $this->project->setProperty($this->property, ((int) $this->value + 1)); 
     } 
    } 
    ]]></adhoc-task> 
    <target name="main"> 
    <echo>${basedir}</echo> 
    <increment value="${basedir}" property="basedir"/> 
    <echo>${basedir}</echo> 
    </target> 
    </project> 

+1

Th anks для ответа, полезно для более сложных вещей. Найти более простой способ с помощью выражений php: http://stackoverflow.com/questions/10432771/phing-string-manipulation –

+1

Это замечательно :-) Должен признаться, я, возможно, немного хвастался ...: D – kguest

+1

Не останавливайтесь: D, можно учиться у них –

Смежные вопросы