Вычислить свойство арифметически

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

Допустим, у меня есть:

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

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

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

  1. <property name="basedir" value="${project.basedir}+1" /> <- Но это соответствует значению: 73+1

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

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

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

1 ответ

Решение

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

  <?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>

Другие вопросы по тегам