2016-09-16 1 views
0

Ich habe ein Maven-Projekt. In der pom.xml Datei folgendes angegeben:Maven-Compiler-Plugin auf Linux gebrochen?

... 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
      <source>1.7</source> 
      <target>1.7</target> 
      </configuration> 
     </plugin> 
     ... 
    </plugins> 
</build> 
... 

AFAIK dies richtig ist, es gegen JDK 7 bauen sollte.

Ich laufe ein Debian-basiertes Linux-Verzeichnis und wenn ich es tue mvn clean install scheint es immer gegen die Javac-Version zu bauen, die ich in meinem os gesetzt habe.

Ich habe versucht zu lesen, was das Plugin genau tut https://maven.apache.org/plugins/maven-compiler-plugin/, aber es ist nicht wirklich, wie.

Ein Beispiel ist ich habe javac 8 läuft auf meinem os. Wenn ich mvn clean install aufrufen, kompiliert das Projekt gegen JDK 8 und nicht JDK 7 wie in der pom.xml angegeben. Warum ist das?

Antwort

2

standardmäßig die Maven-Compiler-Plugin verwendet% JAVA_HOME%/bin/javac zu kompilieren, es sei denn:

  • Sie die ausführbare Datei-Parameter an eine andere Stelle gesetzt
  • Sie Toolchains verwenden, das scheint passend zu Ihren Anforderungen, dh eine andere Java Runtime für Maven im Vergleich zum JDK für das Maven-Compiler-Plugin.
+0

Ah danke. Ich glaube, ich habe missverstanden, was Quelle und Ziel eigentlich sind. –

0

Quell- und Zieleinstellungen werden nur als Parameter an den Javac-Compiler übergeben. Der auf der Maschine installierte Javac wird verwendet.

+0

Ich habe mehrere Javacs auch installiert. Was ist dann der Zweck des Plugins, außer nur anzugeben, welche Version javac verwenden soll? –

+1

Ein Java 8 kann Quellen im Java 7-Format kompilieren und Klassen im Java 7-Format generieren. Bis zu einem gewissen Grad funktioniert das gut. –

+0

@JoopEggen Danke, das zu klären! –