definieren ant Eigenschaft von Umgebung mit Standardwert
-
06-09-2019 - |
Frage
Ich würde meinen Build-Skript wie richtig für die Freigabe und Entwicklungsumgebungen zu handeln.
Dazu möchte ich eine Immobilie in ant definieren, nennen Sie es (zum Beispiel) fileTargetName
fileTargetName
erhalten, es ist Wert aus der Umgebungsvariablen RELEASE_VER
, wenn es verfügbar ist, wenn es nicht verfügbar ist, wird es den Standardwert von dev
Hilfe für Ameise <condition><value></condition>
& <property>
, um es zu schätzen wissen zu arbeiten.
Lösung
Ein Beispiel aus der Ant Dokumentation , wie man eine Umgebungsvariable in eine Eigenschaft:
<property environment="env"/>
<echo message="Number of Processors = ${env.NUMBER_OF_PROCESSORS}"/>
<echo message="ANT_HOME is set to = ${env.ANT_HOME}"/>
In Ihrem Fall würden Sie ${env.RELEASE_VER}
verwenden.
Dann für den bedingten Teil der Dokumentation hier sagt, dass es drei mögliche Attribute:
Attribute Description Required property The name of the property to set. Yes value The value to set the property to. Defaults to "true". No else The value to set the property to if the condition No evaluates to false. By default the property will remain unset. Since Ant 1.6.3
Um es zusammen:
<property environment="env"/>
<condition property="fileTargetName" value="${env.RELEASE_VER}" else="dev">
<isset property="env.RELEASE_VER" />
</condition>
Andere Tipps
Sie brauchen keine <condition>
dafür zu verwenden. Immobilien in Ant sind unveränderlich , so können Sie dies nur verwenden:
<property environment="env"/>
<property name="env.RELEASE_VER" value="dev"/>
Wenn der RELEASE_VER
Umgebungsvariable gesetzt ist, dann wird die Eigenschaft ihren Wert aus der Umwelt erhalten und die zweiten <property>
Anweisung keine Wirkung. Andernfalls wird die Eigenschaft nach der ersten Anweisung nicht gesetzt sein, und die zweite Aussage wird seinen Wert auf "dev"
.
Ich bin sicher, es gibt einfachere Wege als das, aber wie:
<project name="example" default="show-props">
<property environment="env" />
<condition property="fileTargetName" value="${env.RELEASE_VER}">
<isset property="env.RELEASE_VER" />
</condition>
<condition property="fileTargetName" value="dev">
<not>
<isset property="env.RELEASE_VER" />
</not>
</condition>
<target name="show-props">
<echo>property is ${fileTargetName}</echo>
</target>
</project>