Ich verwende das eclipse:eclipse
-Ziel, um eine Eclipse-Projektumgebung zu erstellen. Die Bereitstellung funktioniert einwandfrei. Das Ziel erstellt die var-Klassenpfadeinträge für alle erforderlichen Abhängigkeiten.
Mit m2eclipse
gab es den Maven Container, der einen Exportordner definiert, der WEB-INF/lib
für mich war. Aber ich möchte mich nicht auf m2eclipse
verlassen, also benutze ich es nicht mehr.
Die Klassenpfadeinträge, die von eclipse:eclipse
go generiert werden, haben keinen solchen Exportordner.
Beim Booten des Servlet-Containers mit WTP werden alle Ressourcen und Klassen außer den Bibliotheken im Kontext veröffentlicht.
Was fehlt, um die benötigten Bibliotheken zu veröffentlichen, oder ist das ohne m2eclipse-Integration nicht möglich?
Umgebung
Die Maven-Eclipse-Plugin-Konfiguration
%Vor%Die generierten Dateien
Nach dem Ausführen des Ziels eclipse:eclipse
ist das abhängige Modul nicht in meinem generierten .settings/org.eclipse.wst.common.component
aufgeführt, so dass beim Serverstart die Dependenzen fehlen.
Das bekomme ich:
%Vor%Update für anstehende Leser
Das Problem hier war der abweichende packaging
-Typ. Wenn Sie maven-eclipse-plugin
verwenden, validieren Sie bitte die Verwendung von <packaging>war</packaging>
oder ear
.
Die folgenden Probleme sind von den Situationen gekennzeichnet, dass ich zwei Build-Lebenszyklen in einem Maven Pom habe.
Was fehlt, um die benötigten Bibliotheken zu veröffentlichen, oder ist das ohne m2eclipse-Integration nicht möglich?
Ich bin mir nicht sicher, ob ich das Problem verstehe. Ich habe die maven-eclipse-plugin
mit maven webapps lange erfolgreich verwendet. Funktioniert die Bereitstellung auf einem Server oder nicht? Ist die Anwendung nutzbar oder nicht? Kannst du das klären?
Nur für den Fall, ich habe einen schnellen Test auf eine neu erstellte Webapp mit Ihrer Plugin-Konfiguration gemacht, die in Ordnung aussieht. Ich habe nur die jst.java
-Facette entfernt und stattdessen die maven-compiler-plugin
konfiguriert:
Und ich habe eine Abhängigkeit von log4j
hinzugefügt. Dann, wenn ich mvn eclipse:eclipse
starte, bekomme ich das in der generierten .settings/org.eclipse.wst.common.component
:
Die log4j
Abhängigkeit ist da und wird veröffentlicht. Was habe ich vermisst?
Update: Ich habe das bereitgestellte Pom in mein war
-Projekt eingefügt, es geändert, um die Version 2.8 des Eclipse-Plugins zu verwenden und src/main/webapp
aus dem resources
-Element entfernt (es ist kein Ressource) und das bekomme ich beim Ausführen von mvn eclipse:eclipse
:
Sieht gut aus für mich.
Update 2: Wie ich in einem Kommentar zu Ihrer eigenen Antwort geschrieben habe, glaube ich nicht, dass das Eclipse-Plugin ein dynamisches Web-Modul für ein Projekt mit einem Paket vom Typ jar
generiert. Wenn Sie die Verpackung war
ändern, sollte sie sich wie erwartet verhalten. Ich bin mir ziemlich sicher, dass dies der Grund für deine Probleme ist.
Das Beispiel pom (auf pastie.org)
Ich habe ~ 60 Abhängigkeiten von der ursprünglichen pom.xml
entfernt, außer dass nichts geändert wurde. Sie müssen nur den webapp-archetype
erstellen und den Pom in den generierten (durch den Befehl archetype) einfügen
Danach führt eclipse:eclipse
zum generierten .settings/org.eclipse.wst.common.component
was nun project-version="2.0"
zeigt (nachdem ich verschiedene Änderungen von 1.0 zu 1.5 und 2.0 gemacht habe) aber immer noch fehlt <dependent-module>
.
Update (@ Pascal Thivent): Das ist ein guter Punkt. Unser Projekt (ein Web-Framework) hat tatsächlich zwei gemischte Merkmale. Es gibt das jar-packaging
, das verwendet wird, um die Framework-Fähigkeiten bereitzustellen, während es sich in der webapp-Struktur (WEB-INF/...)
Aber es sollte auch möglich sein, das Framework mit seinen Erweiterungen auf einem Servlet-Container selbst auszuführen, damit wir die Basisfunktionalität entwickeln können, ohne es als jar zu packen und es mit einem benutzerdefinierten Projekt zu verwenden. Also ist die jar
hier korrekt.
Update 2
Die source code (EclipseWtpComponentWriter) von maven-eclipse-plugin
zeigt an, dass dies fest codiert ist und es keine gibt Möglichkeit, in die then-Klausel zu laufen, außer dass packaging
auf war
gesetzt wird, oder habe ich etwas übersehen? : (
Tags und Links eclipse maven-2 eclipse-wtp