2013-02-28 12 views
5

Próbuję napisać kompilację ant do kompilacji folderu źródłowego tutaj jest mój skrypt docelowy do kompilacji.jak skompilować tylko zmienione pliki źródłowe za pomocą ANT

<target name="compile" depends="init"> 
     <javac srcdir="${src.dir}" destdir="${classes.dir}" debug="true"> 
      <classpath refid="master-classpath"/> 
     </javac> 

    </target> 

W moim projekcie mam około 1000 plików .java. Kiedykolwiek pojedynczy plik .java zmienia się powyżej celu, ma tendencję do kompilowania wszystkich plików .java. Co sprawia, że ​​rozwój jest bardzo powolny. Po prostu chcę wiedzieć, czy istnieje jakiś sposób lub kod do zmiany zachowania zadania do kompilowania tylko zmodyfikowanego lub zmienionego pliku .java, a nie całego pliku .java.

Proszę, pomóż mi.

+0

używasz Eclipse? –

+0

sprawdź link http://stackoverflow.com/questions/497850/how-to-execute-ant-tasks-on-only-files-that-have-been-modified – Biswajit

+0

Sprawdziłem to. to znaczy, że wykonanie zadania nie jest kompilowane. –

Odpowiedz

10

Jak rozumiem, kompilowanie tylko zmodyfikowanych plików java jest domyślnym zachowaniem zadania javaac ant. Ant używa znacznika czasu pliku .java i odpowiadającego mu pliku .class, aby ustalić, czy plik Java musi zostać zrekompilowany. Używałem go w wielu projektach i nigdy nie miałem problemów.

Oto kilka rzeczy, które można sprawdzić

  1. Czy drzewo źródło katalog struktura pasujących pakietów strukturę Java? Patrz: Why does ant always recompile all my Java files?. Jest to prawdopodobnie przyczyna numer 1, ponieważ znajduje się w FAQ.

  2. Widzę twój cel compile zależy od celu init? Do czego służy cel init? Czy to zależy od dowolnego celu docelowego clean, czy czyści pliki .class?

  3. Jaka jest twoja wersja mrówki? Czy możesz wypróbować inną wersję mrówki, aby sprawdzić, czy nadal masz ten sam problem?

  4. Jeśli żadna z powyższych metod nie rozwiązuje problemu, po kompilacji możesz ręcznie sprawdzić sygnaturę czasową pliku .class i porównać ją ze znacznikiem czasu odpowiedniego pliku .java?

1

Jeśli więc nie usuniesz katalogu klas w żadnym zadaniu zależnym, powiedz "czyste", zadanie javac samoistnie kompiluje tylko zmienione pliki java. Jest to funkcja "out of the box", którą zapewnia zadanie javac. Mam nadzieję, że to pomoże.

+0

Dzięki Tushar Sagar –

Powiązane problemy