Path: csiph.com!2.us.feeder.erje.net!feeder.erje.net!1.eu.feeder.erje.net!news.albasani.net!newsreader4.netcologne.de!news.netcologne.de!.POSTED.xdsl-89-0-213-37.netcologne.de!not-for-mail From: Patrick Roemer Newsgroups: de.comp.lang.java Subject: Re: Ant an Kompilation hindern? Date: Wed, 21 Dec 2016 15:44:27 +0100 Organization: news.netcologne.de Distribution: world Message-ID: References: <87pokm7mab.fsf@gmx.net> <87lgv978in.fsf@gmx.net> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Date: Wed, 21 Dec 2016 14:44:27 +0000 (UTC) Injection-Info: newsreader4.netcologne.de; posting-host="xdsl-89-0-213-37.netcologne.de:89.0.213.37"; logging-data="12223"; mail-complaints-to="abuse@netcologne.de" User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.24) Gecko/20100411 Thunderbird/2.0.0.24 Mnenhy/0.7.6.0 In-Reply-To: <87lgv978in.fsf@gmx.net> Xref: csiph.com de.comp.lang.java:13063 Responding to Оlе Ѕtrеісhеr: >> $ tree bin/ >> bin/ >> └── bar >> └── C2.class >> >> 1 directory, 1 file >> >> >> Etwa so? > > Ich bekomme hier: > $ ls -lR bin/ > > bin/: > insgesamt 8 > drwxr-xr-x 2 ole ole 4096 Dez 21 13:37 bar > drwxr-xr-x 2 ole ole 4096 Dez 21 13:37 foo > > bin/bar: > insgesamt 4 > -rw-r--r-- 1 ole ole 121 Dez 21 13:37 C2.class > > bin/foo: > insgesamt 4 > -rw-r--r-- 1 ole ole 121 Dez 21 13:37 C1.class Wenn wir dasselbe Buildscript mit unterschiedlichen Ergebnissen laufen lassen, liegt die Vermutung nahe, dass es an unterschiedlichen Toolversionen/-varianten liegt. Ich habe hier java version "1.8.0_73" Java(TM) SE Runtime Environment (build 1.8.0_73-b02) Java HotSpot(TM) 64-Bit Server VM (build 25.73-b02, mixed mode) und Apache Ant(TM) version 1.9.5 compiled on May 31 2015 Wie schaut das bei Dir aus? Vielleicht sollte man erst mal lokalisieren, ob es an Ant oder javac liegt... $ rm -r bin/* $ javac -sourcepath src -d bin src/bar/C2.java $ tree bin/ bin/ ├── bar │ └── C2.class └── foo └── C1.class 2 directories, 2 files $ rm -r bin/* $ javac -sourcepath src -d bin -classpath lib/foo.jar src/bar/C2.java $ tree bin/ bin/ └── bar └── C2.class 1 directory, 1 file Bekommst Du die gleichen Ergebnisse? Falls ja, ant vielleicht mal mit "-v" laufen lassen, um den javac-Aufruf zu sehen. >> Einen in sich inkonsistenten Sourcebaum halte ich allerdings für eine >> äußerst schlechte Idee. > > Er ist ja nicht inkonsistent. Wenn das Compilieren dieses Sourcetrees zu Fehlern führt, dann schon irgendwie. :) > Erklärung: Ich brauche das, um Debian-Pakete zu bauen. Dazu ist es > nötig, dass einige Dateien angepasst werden; u.a. weil bestimmte > Abhängigkeiten in Debian nicht verfügbar sind. Diese Anpassungen > betreffen im vorliegenden Fall C1, das ich aber schon als eigenes Paket > pflege. In dem anderen Paket ist die Datei aber enthalten, weil der > Autor (von beiden Dateien) gerne möchte, dass man C2 auch kompilieren > kann, wenn man sich nicht vorher das andere Jar-File gebaut hat. In > Debian möchte ich dagegen keine Code-Kopien verwalten, sondern die > benötigten Klassen über Abhängigkeiten einbinden. > > Ein Grund hier ist, dass ich die genannten nötigen Änderungen nur an > einer Stelle pflegen möchte -- bei C1. Daher lautet meine Aufgabe: > Kompiliere C2, ohne dass die Convenience Copy C1 mitkompiliert wird (was > zu einer Fehlermeldung führen würde). Verstehe. Finde ich immer noch herzlich unschön, aber dann liegt die "äußerst schlechte Idee" eher beim Autor, und Du darfst den Kollateralschaden verwalten... Viele Grüße, Patrick