# Ant Problem



## kama (4. Mai 2006)

Hallo,

ich hänge gerade an einem Problem fest:

Ich habe einen Ant-File der am Anfang viele Property files lädt. Ich möchte aber, dass bei einem Aufruf durch CruiseControl (Anhand einer property cctimestamp zu erkennen), dass ein Property
file durch einen anderen ersetzt wird.


```
<property name="dir.global" location="../Global" />
<property file="${dir.global}/user.properties"/>
<property file="${dir.global}/db.properties"/>
<property file="${dir.global}/jboss.properties"/>
<property file="${dir.global}/compile.properties"/>
<property file="${dir.global}/release.properties"/>
<property file="${dir.global}/directory.properties"/>
```

Es soll "ccbuild.properties" anstatt von "user.properties" geladen werden.  Hat da jemand einen kurzen Hinweis wie sowas am einfachsten geht? Ich breche mir gerade einen ab...

Vielen Dank für die Hilfe..
MfG
Karl Heinz Marbaise


----------



## Johanness (4. Mai 2006)

Zwei Ideen, ich weiß nicht, ob eine davon für Dich passt:

(1) Du lädst immer Deine "ccbuild.properties". Wenn sie nicht da ist, passiert ja nichts schlimmes.

(2) Du baust ein Target mit 
<target name="loadProperties" unless="cctimestamp">
oder mit 'if', das nur bei der (Nicht-)Existenz von cctimestamp ausgeführt wird, und lädst dann darin entsprechend Deine Properties.

Johannes


----------



## kama (4. Mai 2006)

Hallo,

erstmal vielen Dank für Deine Antwort.

Aber ich glaube ich war nicht genau genug mit meinen Ausführungen.

1. ccbuild.properties ist immer da, da eingecheckt.
2. user.properties und ccbuild.properties enthalten z.T. die gleichen Property namen (aber u.U. andere Werte).
    user.properties sind die Werte für den Entwickler und ccbuild.properties für die Build Umgebung z.B.
    Datenbank Name, Verzeichnis für den JBoss usw.

Wenn ich einen Task mache, habe ich das Problem, dass der Task erst nach dem Laden der properties
ausgeführt wird. Somit kann ich ccbuild.properteis nicht nach dem Laden ausführen, da ja dann die gesetzten 
Properties (durch user.properties) nicht mehr verändert werden.

Der andere Haken ist, dass z.B. das JBoss verzeichnis in directory.properties benötigt wird....

Hm....noch eine weitere Idee?

MfG
Karl Heinz


----------



## kama (4. Mai 2006)

Hallo,

so habe die Lösung:


```
<condition property="propertyfile" value="ccbuild.properties">
<isset property="cctimestamp"/>
</condition>
<property name="propertyfile" value="user.properties"/>
<property file="${dir.global}/${propertyfile}"/>
```
Lädt die ccbuild.properties wenn cctimestamp gesetzt ist ansonsten wird
die user.properties geladen.

Vielen Dank
MfG
Karl Heinz


----------

