Изменять значение свойства, поступающее из файла .properties на каждой итерации (Ant) - PullRequest
0 голосов
/ 30 октября 2019

Я впервые за 2 дня использую муравья и борюсь с проблемой ниже.

У меня есть 3 удаленных машины (может быть больше). Допустим, они A, B, C.

Каждый B & C имеет созданный вручную файл свойств с именем Machine.properties , который содержит сведения о соответствующем т / с, такие как его IP, имя хоста и т. Д.

Пример файла:

machine.hostname = VM1

machine.IP = xx.xx.xx.xx

...

Я пытаюсь получить доступ к отдельным компьютерам (B, а затем C) из A и скопировать этот файл m / c Machine.properties в A, а затем получить содержащиеся в нем значения, например machine.hostname & machine.IP и использовать их для дальнейшей обработки.

Первая итерация кода работает правильно. Я могу скопировать B Machine.properties в A и используйте значения из файла. Однако во время второй итерации, хотя C's Machine.properties копируется в A, когда я пытаюсь использовать значения из этого файла, показанные значения являются значениями для машины B (вместос). Читая о свойствах муравья, я понял, что они неизменны, и мы не можем изменить их значение после установки, поэтому я пытаюсь найти обходной путь.

Я прочитал похожие проблемы, опубликованные в SO, и попробовал следующее пока, ноНи один из них не работал.

Попытка 1 Я удалял файл Machine.properties после каждой итерации, думая, что после того, как следующая итерация скопирует новый файл Machine.properties, свойства могут быть «обновлены». Это не сработало.

Попытка 2 Я попытался использовать задачу propertyfile.

После копирования файла Machine.properties я создаю файл файла свойств

<scp remoteFile="${adminname}:${adminpassword}@${IP}:~/myprofile/Machine.properties" localTodir="${destination.dir}" trust="true"/>
<propertyfile file="${destination.dir}/Machine.properties" />

Но тогда я не могу получить доступ к $ {machine.hostname}, пока не загружу содержимое файла, используя

<property file="${destination.dir}/Machine.properties" /> 

, что снова делает свойство $ {machine.hostname} неизменным.

Попытка 3 Я изменил весь свой подход и решил попытаться получить значение, используя задачу propertyregex (вместо scp и т. Д. Для копирования файла и все) и локальную задачу. Это не сработало, потому что я думаю, propertyregex property = .... снова делает значение host неизменным. Кроме того, из того, что я прочитал, если я изменяю значение свойстваиспользуя local, а затем попытайтесь отправить измененное значение из этого конкретного блока кода, оно не будет работать, и это не будет служить моим целям.

....
<property name="host" value="global"/>

 <var name="count" value="0"/>

 <target name="GetVMProperties">
   <for list="${ipaddress}" param = "IP">
     <sequential>
       <var name="IP" value="@{IP}"/>
       <echo message = "IP of VM = ${IP}"/> 
       <exec executable="cmd">
            <arg value="/c"/>
            <arg value="ping"/>
            <arg value="-a"/>
            <arg value="${IP}"/>
            <arg value=">"/>
            <arg value="C:/AntPractice/Regex/cmdOP/output${count}.txt"/>
       </exec>

       <loadfile property="message" srcFile="C:/AntPractice/Regex/cmdOP/output${count}.txt"/>

       <local name="host"/>

       <propertyregex property="host"
              override="true"
              input="${message}"
              regexp="VM[0-9]*"
              select="\0"
              casesensitive="false" />

         <math result="count" operand1="${count}" operation="+" operand2="1" datatype="int" />

       <var name="VM_HNAME" value="${host}"/>
       <echo message="Host name is:${VM_HNAME}"/>
   </sequential>
   </for>
 </target>

Оцените любые идеи / советы/ code snippets для решения вышеуказанной проблемы.

Я должен придерживаться ant для этого, поскольку у нас есть существующий каркас (который использует ant и работает для настройки 1 Remote machine), но яя пытаюсь улучшить его, чтобы он работал на нескольких машинах (B, C и т. д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...