Maven Webapp mit Maven-Eclipse-Plugin erzeugt kein abhängiges Modul

9

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

  • Eclipse 3.5 Java EE Galileo
  • Apache Maven 2.2.1 (r801777; 2009-08-06 21: 16: 01 + 0200)
  • Java-Version: 1.6.0_14
  • m2eclipse

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.

    
codevour 26.04.2010, 13:12
quelle

2 Antworten

4
  

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:

%Vor%

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 :

%Vor%

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 :

%Vor%

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.

    
Pascal Thivent 26.04.2010, 16:30
quelle
0

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

%Vor%

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

%Vor%

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/...)

ausdehnt

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? : (

%Vor%     
codevour 27.04.2010 08:18
quelle

Tags und Links