2016-04-11 18 views
1

Gibt es eine elegante Möglichkeit, einen Wert für eine Eigenschaft zu bestimmen? Zum Beispiel möchte ich zulassen, dass eine Eigenschaft aus einer Datei gelesen wird, aber auch aus einer Umgebungsvariablen abgerufen werden kann. Wenn die Umgebungsvariable vorhanden ist, möchte ich sie über den Wert der Datei priorisieren.Phing-Eigenschaft: Fallback von Umgebungsvariable zu Eigenschaftendatei

Hier ist, was ich habe (mit dem Beispiel Eigenschaft deploy.destination):

<property environment="env" /> 
<if> 
    <isset property="env.DEPLOY_DEST" /> 
    <then> 
     <property name="deploy.destination" refid="env.DEPLOY_DEST"/> 
    </then> 
</if> 
<property file="build.properties"/> 

Es ist jedoch ziemlich sperrig ist (vor allem für mehr als mehr Eigentum).

Gibt es eine Möglichkeit, so etwas zu tun?

Bei diesem Beispiel schlägt es fehl, wenn env.DEPLOY_DEST nicht festgelegt ist.

Danke!

Antwort

2

Angesichts Ihrer Aussage:

Wenn die Umgebungsvariable vorhanden ist, würde Ich mag es über den Wert der Datei zu priorisieren.

können Sie tun

<property environment="env" /> 
<if> 
    <available file="custom.properties"/> 
    <then> 
     <property file="custom.properties" override="false"/> 
    </then> 
</if> 

Der Schlüssel wird Überschreibung sein = "false" env Eigenschaftswerte zu ermöglichen, zu bleiben.

+0

Ich denke, eine wichtige Details ist, dass Umgebungsvariablen anders benannt werden als die Variablen in der Eigenschaftendatei. Zum Beispiel ist die Umgebungsvariable 'DEPLOY_DEST', während die gleiche Variable' deploy.destination' in der Eigenschaftendatei heißt. Ich gehe davon aus, dass das der Standard ist? –

+0

De facto Standard, Sie haben Recht. Mit einem Mapper sollten Sie in der Lage sein, auf den Punkt zu kommen. –