2015-05-15 7 views
9

Ist Eclipse- "Build Project" Befehl gleich dem Maven Befehl "mvn kompilieren"? Machen beide dasselbe?Unterschied zwischen Eclipse-Build Project und Maven Kompilierungsbefehl

Wenn Ja, warum muss ich ein "Build Project" in STS nach der Ausführung von "mvn clean install" tun, um die Anwendung ohne Probleme zu starten? Das Ausführen von "mvn clean install" sollte das Projekt bereits kompiliert haben. Sollte das Aktualisieren des Projekts in STS nicht ausreichen, um es auszuführen?

Wenn Nein, dann ist Eclipse Build anders, weil der Java-Compiler die Java-Sprachspezifikation implementiert, um die Klassen zu erstellen? Aber der folgende Apache Maven link sagt, dass der Standardcompiler javax.tools.JavaCompiler ist (übrigens verwende ich Java 1.6).

Antwort

0

Ich kenne Maven nicht, aber Eclipse-Build unterscheidet sich von ANT-Build einiger Projekte, so sollte Maven der Fall sein. Eclipse verfügt über einen eigenen internen inkrementellen Build-Mechanismus.

Eclipse interne Build (Eclipse Build Project oder Build All oder Clean) und Maven/Ant Build im Grunde tun das gleiche, was bedeutet, dass sie beide die Quellcodedatei kompilieren. Jetzt ist ein offensichtlicher Unterschied, dass Eclipse internes Build keine EAR, WAR etc. Dateien für Sie generiert, was Sie mit ANT/Maven tun. Wenn Sie ANT/Maven angeben, geben Sie den Klassenpfad mit den entsprechenden Elementen an, und dasselbe wird in Eclipse durch die Konfiguration des Buildpfads gemacht. Wenn Eclipse intern erstellt wird, können diese JAR- oder Laufzeitbibliotheken referenziert werden.

In Bezug auf Compiler, wenn Sie mit Eclipse erstellen, dann wird es einen eigenen internen Javac-Compiler der Java-Version Eclipse wird mit verpackt. Sie finden die Java-Version mit Window's> Preference> Java> Compiler. Während für Ihren eigenen Projektaufbau, wird es Ihre JAVA_HOME verweisen.

11

Die kurze Antwort ist keine, Maven Build und Eclipse Build sind nicht das Gleiche.

Grundsätzlich hat Eclipse seine eigene Art Dinge zu bauen, was wenig mit Maven zu tun hat. Auf der einfachsten Ebene führt Eclipse nur die Java-Kompilierung durch und verwendet dabei einen eigenen Java-Compiler (Teil von Eclipse JDT).

Eine genaue Antwort auf ihre Unterschiede ist schwer zu geben, die Situation ist ziemlich komplex und hängt genau davon ab, welche Sachen (Eclipse Plugins) du installiert hast.

Um eine möglichst nahe Annäherung zu erhalten, so dass das, was von Eclipse tut, am meisten ähnelt auf der Kommandozeile, in welchem ​​Maven tut sollten Sie M2e (Maven Eclipse Tooling) installieren.

M2E versucht, das Verhalten Ihrer Eclipse-IDE so nah wie möglich an das Befehlszeilenverhalten von maven anzupassen. Dies geschieht, indem Sie Ihr Eclipse-Projekt konfigurieren. Zum Beispiel, Quellordner, Klassenpfad usw. basierend auf den maven poms zu setzen. Das funktioniert ziemlich gut, wenn deine Poms keine "ausgefallenen" Dinge machen (d. H. Einige nicht so gewöhnliche Maven-Plugins verwenden).Wenn du maven plugins in deinem Pom benutzt um 'spezielle' Dinge zu tun, wie zum Beispiel Code generieren, oder was auch immer, dann hat m2e einen Plugin-Mechanismus, der es maven plugin Autoren erlaubt, ein entsprechendes Eclipse Plugin zu definieren, welches 'eclipse' lehrt. wie man dasselbe macht.

Dies kann haarig werden, da nicht alle Maven-Plugins entsprechende Eclipse-Plugins haben, und selbst wenn sie dies tun, werden sie nicht automatisch für Sie in Ihrer Instanz von Eclipse installiert.

Wenn Sie nicht die Plugins haben, um 'Eclipse' über einige Ihrer Pom-Plugin zu unterrichten. M2e gibt Ihnen eine error about lifecyle mapping. Dies ist ein Hinweis darauf, dass die Befehlszeile von m2e und maven möglicherweise nicht dasselbe für Ihr Projekt tut, und es liegt an Ihnen, dies irgendwie zu lösen (z. B. durch Installation des entsprechenden Eclipse-Projektkonfigurators).

Verwandte Themen