# ANT und relativen Pfad



## turkey0815 (10. Aug 2006)

Hallo,

ich möchte mit ANT die rmiregistry starten (unter Mac OS X). Ich habe im Netz einige Beispiele gefunden, die bei mir leider aus irgendwelchen Gründen nicht funktionieren. 

Problem 1:
Ich kann die registry mit folgendem Script zwar starten, aber sie läuft dann offensichtlich in einer falschen Umgebung, so dass ich keine Klassen registrieren kann. 


```
<target name="start" depends="rmi_prop">
	<exec executable="${basedir}/rmiregistry"/> 
</target>
```

Es funktioniert alles super, wenn ich die registry von Hand starte, allerdings muss ich vorher in das bin-Verzeichnis meines Projektes wechseln.

Ich habe aber überhaupt keine Ahnung, wie ich das mit ANT hinbekomme. Ich habe ein wenig mit dem Starten einer Shell rumgespielt, allerdings ohne Erfolg. Die Registry muss ja dann über ein Kommandline-Argument gestartet werden und das ging nicht.

Problem 2: 
Aus o.g. gründen habe ich ein eigenes Shellscript geschrieben, was ich jetzt mit ANT aufrufen möchte. Ich könnte jetzt das Shell-Script neben das ANT-Script legen, dann funktioniert alles super, aber wenn es in einem anderen Verzeichnis liegt, weiß ich nicht, wie ich dort hinkomme. Muss ich da eigentlich immer mit absoluten Pfaden arbeiten oder kann ich ausgehend von ${basedir} in das darüberliegende Verzeichnis wechseln?


```
<exec os="Mac OS X" executable="../../shellScripts/rmistart" >
```

Warum funktioniert das nicht und gibt es eine andere Lösung?

Vielen Dank schon mal,

Gruß,

André


----------



## SamHotte (11. Aug 2006)

Wenn du eh schon ein Shellscript hast, wieso wechselst du nicht dort in das richtige Verzeichnis?


----------



## turkey0815 (11. Aug 2006)

Ja, dass mache ich auch für die registry, aber ich wollte das ShellScript nicht in das gleiche Verzeichnis, wie die ANT-Scripts legen und konnte deshalb das ShellScript nicht aufrufen. Ich habe es aber mittlerweile hinbekommen.


```
<project name="rmi" default="start">
	<target name="start" depends="rmi_prop">
		<property file="${os.name}.properties"/>
		<echo message="starting rmiregistry ..." />
		<exec executable="${rmiregistry.exe}"/> 
	</target>
	
	<target name="rmi_prop">
		<dirname property="antfile.dir" file="${ant.file}"/>
		<dirname property="parent.dir" file="${antfile.dir}"/>
		<dirname property="parent.parent.dir" file="${parent.dir}"/>
		<echo file="Mac OS X.properties">
			rmiregistry.exe=${parent.parent.dir}/shellScripts/rmistart
		</echo>
		<echo file="Windows.properties">
			rmiregistry.exe=${java.home}/bin/rmiregistry.exe
		</echo>
	</target>
</project>
```

Ist es eigentlich normal, dass das ANT-Script nicht abgearbeitet wird, sondern so lange weiterläuft, bis die registry mit kill terminiert wird?

Gruß,

André


----------



## SamHotte (11. Aug 2006)

Keine Ahnung; probier doch mal, die Registry mit 'nem "&" zu starten...


----------



## turkey0815 (11. Aug 2006)

Habe ich (zumindest im ShellScript) das interessiert ANT irgendwie gar nicht   

Gruß,

André


----------



## SamHotte (11. Aug 2006)

Hmm ... hab leider grad kein Linux zur Hand, um das zu testen. Hast du auf der ant-Page mal geschaut, ob da was dazu steht? Könnte mir schon vorstellen, dass ant immer wartet, sonst funktioniert das mit den abhängigen Targets ja nicht mehr ...


----------

