ant - nach erster Warning kein output mehr

Status
Nicht offen für weitere Antworten.

guni

Bekanntes Mitglied
Hallo, bin neu im bereich ant und ich habe mal eine ant-datei zum deploy mehrerer jar's erstellt.
das rennt auch scoweit durch, nur, dass meine ant nach der ersten warning (javac) keinen output mehr gibt.

woran liegt das?

mfg, guni
 
Ohne, dass du die Ant Datei postest, wird dir wohl höchst wahrscheinlich niemand helfen können.
 
ant script sieht so aus ...

[XML]<?xml version="1.0" encoding="UTF-8"?>
<project name="sag schnittstellen" default="all" basedir=".">

<property name="build.compiler.warnings" value="off"/>

<property name="build.dir" value="C:/build" />
<property name="java.home" value="T:/OraCdb10g/jdk" />
<property name="lohnadmcdb.home" value="V:/lohnadmcdb" />
<property name="lohnadmcdb.lib" value="${lohnadmcdb.home}/lib" />
<property name="cdbdevkit.dir" value="T:\cdb_devkit" />

<target name="clean">
<delete dir="${build.dir}" />
</target>

<target name="init">
<antcall target="clean" />
<mkdir dir="${build.dir}" />
</target>

<target name="_compilegeneral" description="compiles the general lib for leSalaire">
<antcall target="init" />
<javac srcdir="../General" includes="**/*.java" destdir="${build.dir}">
<classpath>
<pathelement location="${lohnadmcdb.home}" />
<pathelement location="${lohnadmcdb.lib}/activation.jar" />
<pathelement location="${lohnadmcdb.lib}/axis.jar" />
<pathelement location="${lohnadmcdb.lib}/cdb-devkit-bpel.jar" />
<pathelement location="${lohnadmcdb.lib}/cdb-devkit-client.jar" />
<pathelement location="${lohnadmcdb.lib}/cdb-devkit-server.jar" />
<pathelement location="${lohnadmcdb.lib}/classes12.jar" />
<pathelement location="${lohnadmcdb.lib}/commons-discovery-0.2.jar" />
<pathelement location="${lohnadmcdb.lib}/commons-logging-1.0.3.jar" />
<pathelement location="${lohnadmcdb.lib}/content.jar" />
<pathelement location="${lohnadmcdb.lib}/content-ws-client.jar" />
<pathelement location="${lohnadmcdb.lib}/http_client.jar" />
<pathelement location="${lohnadmcdb.lib}/jaxrpc.jar" />
<pathelement location="${lohnadmcdb.lib}/ldapjclnt10.jar" />
<pathelement location="${lohnadmcdb.lib}/mail.jar" />
<pathelement location="${lohnadmcdb.lib}/ojdbc14.jar" />
<pathelement location="${lohnadmcdb.lib}/repository.jar" />
<pathelement location="${lohnadmcdb.lib}/saaj.jar" />
<pathelement location="${lohnadmcdb.lib}/servlet.jar" />
<pathelement location="${lohnadmcdb.lib}/trusted-app-utility.jar" />
<pathelement location="${lohnadmcdb.lib}/wsdl4j-1.5.1.jar" />
<pathelement location="${lohnadmcdb.lib}/xml.jar" />
<pathelement location="${lohnadmcdb.lib}/xmlmesg.jar" />
<pathelement location="${lohnadmcdb.lib}/xmlparserv2.jar" />
</classpath>
</javac>
</target>

<target name="_jargeneral" depends="_compilegeneral" description="creates jar file for the general lib of leSalaire">
<jar destfile="C:\Entwicklung\javabin\general.jar" basedir="${build.dir}" includes="**/*.class" manifest="C:\Entwicklung\programm\javaprog\General\MANIFEST.MF" />
</target>

<target name="compilesagparsers" description="creates build for sagparsers">
<antcall target="init" />
<javac srcdir="." includes="**/*.java" destdir="${build.dir}">
<classpath>
<pathelement location="C:\Entwicklung\javabin\general.jar" />
</classpath>
</javac>
</target>

<target name="jarsagparsers" depends="compilesagparsers" description="creates jar file for the sag parsers">
<jar destfile="C:\Entwicklung\javabin\sagparsers.jar" basedir="${build.dir}" includes="**/*.class" manifest="C:\Entwicklung\programm\javaprog\SAG Schnittstellen\MANIFEST.MF" />
</target>

<target name="copyjars">
<copy file="C:\Entwicklung\javabin\general.jar" tofile="V:\javabin\lib\general.jar" />
<copy file="C:\Entwicklung\javabin\sagparsers.jar" tofile="V:\javabin\SAG_sagparsers.jar" />

<copy file="C:\Entwicklung\javabin\general.jar" tofile="U:\javabin\lib\general.jar" />
<copy file="C:\Entwicklung\javabin\sagparsers.jar" tofile="U:\javabin\SAG_sagparsers.jar" />
</target>

<target name="all" depends="_jargeneral,jarsagparsers" description="creates jar files to run sag parsers">
<antcall target="copyjars" />
</target>

</project>[/XML]

output sieht so aus ...

Buildfile: C:\Entwicklung\programm\javaprog\SAG Schnittstellen\build.xml
_compilegeneral:
init:
clean:
[delete] Deleting directory C:\build
[mkdir] Created dir: C:\build
[javac] Compiling 6 source files to C:\build
[javac] C:\Entwicklung\programm\javaprog\General\src\com\eurofunk\general\LsCrypt.java:52: warning: unmappable character for encoding UTF8
 
Mit welchem Editor schreibst du denn so? Da scheint was mit der Zeichenkodierung nicht zu passen.

Btw <antcall> ist böse! Für das was du da machst, kann man bei den targets auch die depends="target" nutzen.
 
was passt mit der Zeichenkodierung nicht?!

das problem bei depends war, dass der entsprechende block dann nur ein einziges mal im ganzen durchlauf aufgerufen wurde -> antcall ...

lg, guni
 
Kp, wie erstellst du denn deine .java Dateien?

Das eine dependency nur einmal abgearbeitet wird ist normal und soll auch so sein, wenn du ein target öfters brauchst, ist in den meisten Fällen dein Gedankengang falsch.

Wenn ich mir deine Datei angucke, so brauchst du nur init 2mal aufrufen und selbst das ist meiner Meinung nach nicht nötig. Somit kann man mit depends einen schönen Abhängigkeitsgraphen aufbauen, den Ant dann abbaut.
 
Klär mich mal bitte auf, was ist daran böse?

[QUOTE="Ant in Action", Seite 208]As Ant creates a new project on every <antcall>, the build will be slow and memory hungry, with common targets being called repeatedly.
Except for targets that you want to call more than once, especially with different parameters, let Ant handle the order of targets by listing them in the dependencies attributes of other tasks.
[/QUOTE]

Das Script oben macht (bis auf evtl. einmal) genau dies, anstatt mit dependencies zu arbeiten z.B. <target name="init" dependencies="delete", ruft er in delete init auf und genau das sollte eben vermieden werden. Das Prinzip zieht sich bei ihm durch das ganze Script durch.
 
ok ...
kurz gesagt:
ich will ein ant script schreiben, dass verschiedene Projekte kompiliert, den bulid dann in jars umwandelt die dann in mehrere Verzeichnisse (Netzlaufwerke) kopiert werden.

mein 1. problem:
ich habe ein init-target. es erstellt einen neuen build-ordner.
dann sollen nach der reihe die projekte kompiliert werden und jeweils eine jar darus erstellt werden.
mein problem ist, dass ich den build-ordner für jedes projekt gern wieder frei hätte ...
wenn ich meine all-target jetzt so ausführe, dass ich init als dependancy setze, dann wird init nur ein einziges mal ausgeführt; der build-ordner wird also zwischen den kompilierungsvorgängen nicht mehr gelöscht. meine lösung: antcall.
gibt es da was besseres?!

mein 2. problem:
sobald bei irgendeiner kompilierung eine warning auftritt, bekomm ich keinen ant-output mehr :-(

mein 3. problem:
ich hab in eclipse ein projekt mit verschiedenen packages.
möchte mich beim kompilieren sagen
package_a.subpackage_1.* -> first.jar
package_a.subpackage_2.* -> second.jar
wie kann ich das mit ant lösen?!

bitte um hilfe.
mfg, guni
 
ok ...
kurz gesagt:
ich will ein ant script schreiben, dass verschiedene Projekte kompiliert, den bulid dann in jars umwandelt die dann in mehrere Verzeichnisse (Netzlaufwerke) kopiert werden.

mein 1. problem:
ich habe ein init-target. es erstellt einen neuen build-ordner.
dann sollen nach der reihe die projekte kompiliert werden und jeweils eine jar darus erstellt werden.
mein problem ist, dass ich den build-ordner für jedes projekt gern wieder frei hätte ...
wenn ich meine all-target jetzt so ausführe, dass ich init als dependancy setze, dann wird init nur ein einziges mal ausgeführt; der build-ordner wird also zwischen den kompilierungsvorgängen nicht mehr gelöscht. meine lösung: antcall.
gibt es da was besseres?!

Evtl könntest du ja das ganze so lösen:
Code:
build
|- project_a
|- project_b
 - project_c

Dann in die unter Ordner kompilieren, kopieren etc. und anschließend das jar erstellen.

mein 2. problem:
sobald bei irgendeiner kompilierung eine warning auftritt, bekomm ich keinen ant-output mehr :-(

komisch, kenne ich leider nicht.

mein 3. problem:
ich hab in eclipse ein projekt mit verschiedenen packages.
möchte mich beim kompilieren sagen
package_a.subpackage_1.* -> first.jar
package_a.subpackage_2.* -> second.jar
wie kann ich das mit ant lösen?!

So:
Code:
<jar basedir="X" destfile="Y/first.jar">
  <fileset includes="package_a/subpackage_1/**" />
</jar>
 
Zuletzt bearbeitet:
hmm ... die warnungen treten hauptsächlich im zusammenhang mit umlauten auf:
warning: unmappable character for encoding UTF8

wie kann ich solche warnungen unterdrücken?!
 
Umlaute worin? Dateinamen, Ordner, Java Quelltexte? Generell solltest du umlaute prinzipiell beim programmieren vermeiden.
 
... ja. ich hab sie in meinen javadoc-Kommentaren jetzt in die HTML-Codierung geändert.
Sonst hab ich sie in Kommentaren drin und manchmal in Pfaden von Ordnern, die ich in meinem Quelltext aufrufe.
Muss ich sie jetzt echt überall ändern, damit ich einen vollständigen ant-output bekomme?
ich versteh das nicht.
kann es sein, dass ant in eclipse standardmäßig irgendwie so konfiguriert ist, dass es seinen output bei jeder warning abbricht?!
das ist extrem störend weil ich nämlich dann nie mit sicherheit sagen kann, ob mein build wirklich erfolgreich durchgelaufen ist!

lg, guni
 
hmm ... encoding war auf 'Default (Cp1252)'
... hab es auf UTF-8 geändert. Jetzt geht's!! Danke!!
war mir eine riesen Hilfe!
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben