Forum: PC-Programmierung Java Builds mit ANT - frustrierend.


von Klaus (Gast)


Lesenswert?

Ich versuche mich gerade an einem (dachte ich) einfachen Problem und 
Frage mich was eigentlich das Problem mit Make war dass unbedingt Ant 
entwickelt werden mußte:

Ich möchte eine Jar file erstellen in der nur *.class Dateien sind. Die 
.class Dateien werden in den gleichen Ordner erzeugt in dem die .java 
Dateien abgelegt sind.

Die Projektstruktur sieht so aus:

build.xml
de/group/project/[5 directories]

Nun habe ich eine "jar" Task geschrieben die so aussieht:
1
<target name="jar" depends="compile">
2
  <jar jarfile="project.jar" basedir=".">
3
    <fileset dir="." includes="**/*.class" />
4
    <fileset dir="." excludes="**/*.java" />
5
  </jar>
6
</target>

Leider bringt dieses fileset Gewürge anscheinend gar nichts - Ant bindet 
einfach ALLES in das Archiv ein...

Wo liegt das Problem?

von A.H. (Gast)


Lesenswert?

Folgendes reicht aus, anderenfalls fügst du sogar Dateien doppelt und 
dreifach hinzu:
1
<target name="jar" depends="compile">
2
  <jar jarfile="project.jar">
3
    <fileset dir="." includes="**/*.class" />
4
  </jar>
5
</target>

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Klaus schrieb:
> Wo liegt das Problem?

an "deprecated syntax" und daran das du die doku nicht liest ;)
Wie A. H. schon richtig schrieb erzeugst du damit zwei Filesets.

Erstes Beispiel zeigt wies richtig geht:
http://ant.apache.org/manual/Types/fileset.html

Wenn du NUR classfiles haben willst müsste eigentlich eine include 
Direktive reichen.

Klaus schrieb:
> das Problem mit Make war dass unbedingt Ant
> entwickelt werden mußte

Ja genau wozu haben wir eigentlich C, C++, Java C# und das ganze 
Geraffel "früher" hat doch auch Assembler gereicht ;)

Mal ganz ehrlich, Ant hat seine Tücken, bietet aber auch ne ganze Menge 
wenn man bereit ist sich da durchzuwurschteln.

von Klaus (Gast)


Lesenswert?

A.H. schrieb:
> <target name="jar" depends="compile">
>   <jar jarfile="project.jar">
>     <fileset dir="." includes="**/*.class" />
>   </jar>
> </target>

Danke, das geht. Komischerweise werden mit ANT Version 1.8.1 die Sources 
auch bei der von mir geposteten falschen Variante nicht eingebunden - 
kommt nur ne Warnung weil er wohl versucht das Archiv selbst mit 
einzubinden. Daheim habe ich ANT 1.8.2, da hat diese Variante definitiv 
die Sourcen mit eingebunden... wtf

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.