# ant - Jar Task



## vogella (6. Feb 2007)

Hallo,

ich habe ein jar Task und würde gerne in das .jar die class und resource Files einfügen. Resources Files sind meine Graphiken. Hier schaffe ich es nicht, daß die Resourcen aus einem anderen Verzeichnis als dem "build" Verzeichnis herauskopiert werden.

Ich würde gerne: die .class files aus /hauptverzeichnis/build kopieren und die Resource Dateien aus /hauptverzeichnis/resource kopieren. 

Aktuell kopiere ich resource nach build und dann geht es. Ist aber unschön aus meiner Sicht, da es unnötig ist. 


```
<target name="jar" depends="compile">
		
		<echo> Run the jar file ${DSTAMP} </echo>
		<jar destfile="${deploy}/${jarfile}${DSTAMP}.jar" basedir="${build}" manifest="${manifest}">
			<fileset dir="${build}">
				<patternset refid="forjar" />
			</fileset>
		</jar>
	</target>
```

Der Patternset ist so definiert:


```
<patternset id="forjar">
		<include name="**\*.class" />
		<include name="../**/resource/*.*" />
	</patternset>
```

Hat jemand einen Tipp wie ich aus zwei unterschiedlichen Verzeichnissen kopieren kann.

Viele Grüße, Lars


----------



## frischfisch (6. Feb 2007)

So mach isch das:

```
<jar destfile="${jar.dir}/my.jar" 
			 basedir="${build.dir}"
			 duplicate="preserve">
			<fileset dir="${build.dir}">
				<include name="com/xyz/**/**/**" />
			</fileset>
			<fileset dir="${conf.dir}">
				<include name="roles.xml" />
				<include name="users.xml" />
			</fileset>
		</jar>
```
Grüße,
frischfisch.


----------



## vogella (6. Feb 2007)

Oh, entschuldigung ich habe wohl versehentlich zwei mal den selben Beitrag gepostest:


Beitrag von nEp:

Hmm also ich habe das so gemacht:



```
<property name="builddir" value="build" />
<property name="dist" value="dist" />
<property name="resource" value="resource" />
...
<target name="build" depends="compile,manifest" description="Compiles the source code and creates a jar file">
  <jar jarfile="${dist}/MyJAR.jar" manifest="META-INF/MANIFEST.MF">
     <fileset dir="${builddir}" includes="**/*.class" />
     <fileset dir="${resource}" />
  </jar>
</target>



Also im Prinzip mache ich es auch so wie du. Ich gebe halt im jar-Tag mehrere Filesets an. D.h. hier werden die ganzen .class Dateien aus dem Ordner "build" und auch alle Dateien aus dem Ordner "resource" in das JAR aufgenommen. Funktioniert.
```

nEp und frischfisch: danke: ich probiere fileset bald aus. patternset scheint hier nicht das richtige zu sein. 

Viele Grüße, Lars


----------

