definir propriedade formiga do ambiente, com valor padrão
-
06-09-2019 - |
Pergunta
Gostaria que o meu script de construção para agir adequadamente para ambientes de libertação e de desenvolvimento.
Por isso eu gostaria de definir uma propriedade em formiga, chamá-lo (por exemplo) fileTargetName
fileTargetName
vai buscá-la de valor a partir da variável de ambiente RELEASE_VER
se ele está disponível, se ele não estiver disponível, terá o valor padrão de dev
Ajuda com <condition><value></condition>
formiga & <property>
para fazê-lo funcionar é apreciado.
Solução
Um exemplo do Ant documentação de como obter uma variável de ambiente em uma propriedade:
<property environment="env"/>
<echo message="Number of Processors = ${env.NUMBER_OF_PROCESSORS}"/>
<echo message="ANT_HOME is set to = ${env.ANT_HOME}"/>
No seu caso, você usaria ${env.RELEASE_VER}
.
Em seguida, para a parte condicional, a documentação aqui diz que há três atributos possíveis:
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
Colocá-lo juntos:
<property environment="env"/>
<condition property="fileTargetName" value="${env.RELEASE_VER}" else="dev">
<isset property="env.RELEASE_VER" />
</condition>
Outras dicas
Você não precisa usar um <condition>
para isso. Propriedades em Ant são imutável , assim você pode simplesmente usar este:
<property environment="env"/>
<property name="env.RELEASE_VER" value="dev"/>
Se a variável de ambiente RELEASE_VER
está definido, então a propriedade terá seu valor do meio ambiente e a segunda instrução <property>
não terá nenhum efeito. Caso contrário, a propriedade será desactivado após a primeira declaração, e a segunda instrução irá definir o seu valor para "dev"
.
Estou certo de que há maneiras mais fáceis do que isso, mas como sobre: ??
<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>