2013-06-06 9 views
10

mam taką samą konfigurację wtyczek:Maven kompilator przebudować wszystkie pliki, zamiast modyfikować

<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.1</version> 
     <configuration> 
     <staleMillis>1</slateMillis> 
     <useIncrementalCompilation>true</useIncrementalCompilation> 
     </configuration> 
    </plugin> 
</plugins> 

I zawsze Maven skompilować wszystkie pliki, jeżeli zmiana jednego z nich. Oczywiście nie ma problemu, jeśli masz 10-15 plików. Mam ponad tysiąc plików źródłowych i zajmuje to dużo czasu. Kompilator Mavena ma jakieś ukryte ustawienia do rekompilacji tylko zmodyfikowanych plików? Jakiekolwiek obejścia?

+0

Które polecenie używacie, aby uruchomić Maven budować? –

+0

Próbuję kompilować, pakować i instalować. Bez różnicy. – Torsten

+0

Podaj pełne polecenie: 'mvn ' –

Odpowiedz

26

https://issues.apache.org/jira/browse/MCOMPILER-209

Użyj go z bułgarskim notacji (tak < -> no)

<useIncrementalCompilation>false</useIncrementalCompilation> oznacza prawdziwe i odwrotnie

+3

Epic) Dzięki! – Torsten

+2

Należy pamiętać, że przy tym ustawieniu wykonuje prostą kompilację przyrostową, ale nie jest zbyt przydatna, ponieważ nie rekompiluje klas zależnych. Na przykład jeśli masz klasę A nazywającą metodę klasy B i modyfikujesz sygnaturę metody w B, maven przekompiluje tylko B i kompilacja się powiedzie, ale teraz A ma odniesienie do nieistniejącej metody w B – Ivan

+3

Tak więc to ustawienie może być traktowane jako "useSmartIncrementalCompilation", więc gdy ustawimy go na false, otrzymamy tylko podstawowy (i niebezpieczny), który opisałem powyżej. W trzecim przypadku wydaje się, że "inteligentny" jest zepsuty, a zamiast obliczania właściwych klas zależnych, jeśli jedna klasa w projekcie jest zmieniana, oznacza wszystkie klasy jako klasy zależne, co skutecznie czyni kompilację nieinwazyjną. – Ivan

Powiązane problemy