2013-06-06 11 views
10

I gleiche Plugin-Konfiguration haben:Maven Compiler recompile alle Dateien modifiziert stattdessen

<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> 

Maven immer alle Dateien neu kompiliert werden, wenn einer von ihnen zu verändern. Natürlich ist es kein Problem, wenn Sie 10-15 Dateien haben. Ich habe mehr als tausend Quelldateien und es braucht viel Zeit. Maven Compiler Plugin haben einige versteckte Einstellungen um nur modifizierte Dateien neu zu kompilieren? Irgendwelche Problemumgehungen?

+0

Welcher Befehl nutzen Sie Ihr Maven starten bauen? –

+0

Ich versuche zu kompilieren, zu packen und zu installieren. Kein Unterschied. – Torsten

+0

Bitte geben Sie den vollen Befehl bitte: 'Mvn ' –

Antwort

26

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

es mit bulgarischer Notation (ja < -> no)

<useIncrementalCompilation>false</useIncrementalCompilation> bedeutet wahr und umgekehrt

+3

Epic) Danke dir! – Torsten

+2

Beachten Sie, dass es mit dieser Einstellung die einfache inkrementelle Kompilierung durchführt, aber es ist nicht sehr nützlich, da abhängige Klassen nicht neu kompiliert werden. Wenn zum Beispiel Klasse A eine Methode der Klasse B aufruft und Sie die Signatur einer Methode in B ändern, wird maven nur B neu kompilieren und die Kompilierung wird erfolgreich sein, aber jetzt hat A eine Referenz auf die nicht existierende Methode in B. – Ivan

+3

Also diese Einstellung kann man sich als "useSmartIncrementalCompilation" vorstellen, also wenn wir es auf false setzen, bekommen wir nur die grundlegende (und gefährliche), die ich oben beschrieben habe. In Maven 3 scheint der "intelligente" Teil defekt zu sein, und wenn eine einzelne Klasse in einem Projekt geändert wird, werden nicht die richtigen abhängigen Klassen berechnet, sondern alle Klassen als abhängige Klassen, was die Kompilierung nicht inkrementell macht. – Ivan

Verwandte Themen