Warum kompiliert ant alle Klassen für jeden Lauf?

8

Ich bin eher daran gewöhnt zu machen, also bin ich verwirrt, warum Ameisen Klassen neu kompiliert, wenn die Quelle nicht geändert wurde. Ich habe gelesen, dass in einigen Fällen, in denen Generika verwendet werden, eine Neukompilierung erforderlich ist, aber ich bin mir nicht sicher, ob dies für mein Projekt notwendig ist.

Außerdem habe ich in der javac-Aufgabe includeDestClasses="true"

gesetzt

Hier sind einige der Ziele, die ich verwende

%Vor%     
Dana the Sane 06.05.2009, 01:06
quelle

3 Antworten

9

Versuchen Sie, das öffnende Tag der Aufgabe javac so zu ändern, dass sowohl ein Attribut srcdir als auch ein Attribut includes enthalten ist:

<javac destdir="${build}" classpath="project.class.path" debug="on" srcdir="${src}" includes="util/**" includeDestClasses="true" source="1.5">

    
Bobby Eickhoff 06.05.2009, 03:00
quelle
7

Ihre Quelle & amp; Zielverzeichnisse sind nicht äquivalent, daher kann ant die Ausgabedateien nicht effektiv vergleichen, um sie zu vergleichen.

Dies ist eine FAQ: Ссылка

    
Edward Q. Bridges 06.05.2009 02:11
quelle
1

Nach meiner Erfahrung kompiliert das Javac-Ziel nicht alle Klassen, nur diejenigen, die es benötigen, auch ohne das Attribut includeDestClasses. Tatsächlich habe ich normalerweise zwei (oder mehr) Kompilierziele eingerichtet, eines, das eine vollständige Kompilierung durchführt (erzwungen durch Löschen des Ausgabeverzeichnisses) und eines, das eine schnelle Kompilierung durchführt, ähnlich wie deine Java-Zeile. Sind Sie sicher, dass eines Ihrer Abhängigkeiten das Ausgabeverzeichnis nicht löscht?

    
Glenn 06.05.2009 01:51
quelle

Tags und Links