# Ant Build.xml update



## wakoz (1. Jun 2009)

Hi
Ich habe ein kleines problem mit meiner Build.xml
Ich compeliere und deploye eine jar, soweit funktioniert das auch. Nur wenn die jar bereits existiert kann sie nicht in das ziel verzeiuchnes deployt werden. Damit die existierende jar überschrieben werden kann gibt es laut manual das Attribute update

nur wenn ich update="true" oder ="yes" angebe passiert nichts beim ausführen
Beispiel:

```
<jar destfile="${dist}/lib/app.jar" basedir="${build}/classes" update="true"/>
```
zuvor compelire ich mit mit dem javac tag in der xml meine class die xml habe ich in Eclipse erstellt.

gebe ich update an der falschen stelle an? oder verstehe ich update falsch? oder steht es an der falschen stelle?


----------



## SvenK (1. Jun 2009)

Das Manual sagt

"The update parameter controls what happens if the JAR file already exists. When set to yes, the JAR file is updated with the files specified. When set to no (the default) the JAR file is overwritten."

Heisst also, es wird standardgemäß überschrieben. 

Definiere den Ausdruck "es passiert nichts beim Ausführen" etwas genauer.


----------



## wakoz (1. Jun 2009)

Wie gesagt die class soll durch die xml compeliert und in das zielverzeichnis deployt werden.

Die xml starte ich über Eclipse (Run as ANT.Build oder änlich) die console gibt die erfolgraiche compelierung wieder, nur wird erst dann deployt wenn das zielverzeichnis leer ist.

Für mich heist das, das upgrade wird nicht ausgeführt und die alte jar wird weiter genutzt obwohl diese überschrieben werden sollte.

Die Consolen wiedergabe endert sich entsprechend 
-Beim Leeren verzeichnis wird der deploy ausgegeben und bei einer existierenden jar eben nicht.


----------



## SvenK (1. Jun 2009)

Zeig doch mal deine build.xml, ich glaube wir reden irgendwie aneinander vorbei


----------



## wakoz (1. Jun 2009)

```
<project name="build" default="jar" basedir=".">
	<property file="build.properties" />
	
	<target name="compile">
		<javac srcdir="${src.dir}" destdir="${build.dir}">
			<classpath>
				<fileset dir="${jboss}/client">
					<include name="**/*.jar" />
				</fileset>
				<fileset dir="${jboss.server.default}/lib">
					<include name="**/*.jar" />
				</fileset>
			</classpath>
			<include name="**/*.java" />
		</javac>
	</target>
	
	<target name="jar" depends="compile">
		<jar destfile="${jboss.server.default}/deploy/Titan.jar" basedir="${build.dir}" update="yes"/>
	</target>
	
</project>
```
Ausgabe wenn jar nicht im zielverzeichnis vorhanden ist.

```
Buildfile: C:\Dokumente und Einstellungen\Wolfgang\workspace\Titan\Build.xml
compile:
jar:
      [COLOR="Blue"][jar] Building jar: C:\Programme\JBOSS\jboss-4.2.3.GA-jdk6\jboss-4.2.3.GA\server\default\deploy\Titan.jar[/COLOR]
BUILD SUCCESSFUL
Total time: 1 second
```
Ausgabe wenn die Jar bereits vorhanden ist, die oben blau markierte zeile müsste aber wenn deployt wird mit aufgeführt werden.

```
Buildfile: C:\Dokumente und Einstellungen\Wolfgang\workspace\Titan\Build.xml
compile:
jar:
BUILD SUCCESSFUL
Total time: 406 milliseconds
```
 Ich verstehe das so, die xml wurde ausgeführt aber die jar wurde nicht wie im Manual beschrieben überschrieben.


----------



## SvenK (1. Jun 2009)

Das Jar wird nur neu erstellt, wenn sich seit dem letzten Mal etwas geändert hat, wenn also die Quellen geändert und neu compiliert wurden oder die Jar nicht vorhanden ist. Ist nichts passiert, merkt das Ant und macht folglich auch nix.

Es hat also alles seine Richtigkeit. Ich würde das update wieder entfernen.


----------



## wakoz (1. Jun 2009)

gut danke für die schnelle hilfe

~close~


----------

