2013-02-06 17 views
12

ich eine Web-Anwendung, die auf diese Weise strukturiert ist:WTP - M2e Bereitstellung nicht transitive Abhängigkeiten

A.jar -> B.war -> C.war

Ich bin mit Eclipse Juno und der WTP Version ist 1.1. Das A.jar ist ein Arbeitsbereich-Dienstprogramm-Projekt, das von B.war aufgenommen wird. B.war ist ein Kriegsprojekt, das C.war als Overlay enthält. Das ist the way ich tue, dass:

<dependency> 
    <groupId>com.projects</groupId> 
    <artifactId>B</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <type>war</type> 
    <scope>runtime</scope> 
</dependency> 

Danach habe ich die C-Projekt auf den Tomcat-Server bereitstellen. Das funktioniert wie ein Zauber, wenn ich den von Maven erzeugten Krieg manuell auf den Tomcat auslege, weil A.jar in WEB-INF/lib enthalten ist. Allerdings kommt mein Problem, wenn ich m2e-wtp die Bereitstellung zu tun, weil es das Overlay richtig macht, aber nicht die transitive Abhängigkeit A enthält. Ich habe versucht, es als Pom aufzunehmen, wie ich irgendwo hier gelesen habe, aber ich habe das gleiche Ergebnis.

<dependency> 
    <groupId>com.projects</groupId> 
    <artifactId>B</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <type>war</type> 
    <scope>runtime</scope> 
</dependency> 

<dependency> 
    <groupId>com.projects</groupId> 
    <artifactId>B</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <type>pom</type> 
</dependency> 

Ich verwende die neuesten Versionen von M2e (1.2) und M2e-wtp (0,16) und habe meine Projekte mit der Maven-Konfiguration aktualisiert.

Ist es ein m2e-wtp Problem oder muss ich einfach mein Projekt auf andere Weise organisieren?


EDITED

I M2e-wtp Konfiguration in Eclipse project./settings/org.eclipse.wst.common.component Datei gespeichert wird bemerkt. Das ist, wie es für meinen Krieg aussieht:

<dependent-module deploy-path="/" 
    handle="module:/overlay/prj/B?includes=**/**&amp;excludes=META-INF/MANIFEST.MF"> 
    <dependency-type>consumes</dependency-type> 
</dependent-module> 
<dependent-module deploy-path="/" 
    handle="module:/overlay/slf/?includes=**/**&amp;excludes=META-INF/MANIFEST.MF"> 
    <dependency-type>consumes</dependency-type> 
</dependent-module> 

Wie ich den Krieg Abhängigkeit gesetzt sehen für verbrauchen, während die jar Abhängigkeiten für Verwendung eingestellt sind.

Veröffentlicht m2e-wtp Version 0.17 scheint es nicht zu beheben.


EDITED (2013-08-30)

Heute war ich auf das gleiche Problem wieder. Sogar ich habe Eclipse Kepler mit der latest stable release of WTP out of the Box installiert, scheint dieses Problem zu bestehen. Ich dachte, es wäre gelöst, aber ich habe es scheinbar falsch ...

+0

Ja. Immer noch das Problem mit m2e-wtp - Maven Integration für WTP (Inkubation) Version 0.17.0.20130212. –

Antwort

5

Ich denke, es ist kein Problem Ihrer Projektorganisation. Ihr Problem ist diesem m2e-wtp bug report sehr ähnlich.

+2

m2e ist ein Beweis dafür, dass Open Source den Namen offene Wunden bekommen hat ... – Rob

+0

Ich habe eine andere Art von Antwort erwartet, aber ich bin der Bug des Plugins. Sie verdienen die Prämie wegen der Verbindung zu ihr. –

+0

Fehler wurde am 2015-03-05 behoben. 15. Ich habe den Schnappschuss m2e-wtp von http://download.eclipse.org/m2e-wtp/snapshots/mars/ getestet. – cthiebaud

1

Es scheint ein Eclipse Juno und WTP Plugin-Problem zu sein.

hatte ich das gleiche Problem und ich auf diese Weise gelöst:

  1. Sichern Sie Ihren Eclipse-Workspace und Ihren Projektcode
  2. Ihr Projekt von Eclipse entfernen (ohne den Inhalt entfernen)
  3. offen eine Befehlsanschluss (CMD)
  4. run MVN Eklipse: clean
  5. run MVN Eklipse: Eklipse -Dwt pVersion = 2,0
  6. bearbeiten Ihre Eclipse-Classpath-Datei mit einem Texteditor.% PROJECT_PATH% \ Classpath
  7. Entfernen Sie alle Zeilen mit dem Attribut Art = "var" von Ihrem .classpath Datei. Zum Beispiel:

    < classpathentry Art = "var" path = "M2_REPO/javax/Servlets/Servlet-API/2.5/Servlet-API-2.5.jar" sourcepath = "M2_REPO/javax/Servlets/servlet api/2.5/servlet-api-2.5-sources.jar "/>

  8. Datei speichern & Editor schließen.
  9. in Eclipse, klicken Sie auf: File-> Import ...-> Maven-> importiert Projekt vorhandene Maven und Ihr Projekt importieren wieder
  10. Maven -> Projekt aktualisieren (wenn Sie möchten)
können Sie siehe unter Deployment-Assembly in Eclipse-Projekteigenschaften, dass das Problem gelöst ist und die Maven-Abhängigkeiten vorhanden sind.

Hoffe das hilft.

+0

Noch müssen Sie Ihre Lösung versuchen, was ich tue ist nur die transitive Abhängigkeit abhängig vom Profil enthalten. Wie auch immer, Muchas Gracias. –

1

Ich habe auch dieses Problem. Ich habe eine hässliche Umgehungsmöglichkeit:

Setzen Sie alle die ursprünglichen Abhängigkeiten des Krieges in einem separaten Projekt (Typ jar) und machen beide Original-Krieg und Overlay-Krieg davon abhängen. So zum Beispiel:

A.jar -> B.war -> C.war

wird

A.jar -> B-dependencies.jar (neues Modul namens B -dependencies erstellt)

B-dependencies.jar -> B.war

B-dependencies.jar -> C.wa r

Beachten Sie, dass es nicht spezifisch für Tomcat ist; Ich benutze JBoss.

+0

Ja, genau das mache ich. Darüber hinaus schließe ich B-Abhängigkeiten.jar abhängig vom Profil ein (ich verwende es mit Eclipse-Profil und nicht mit Produktion eins, da das Problem mit Eclipse zusammenhängt). Ich habe den Titel der Frage geändert, um ihn auf Tomcat zu beziehen ;-) –

+0

Der m2e-wtp-Gründer hat [eine ähnliche Lösung] (https://bugs.eclipse.org/bugs/show_bug.cgi?id=398138#c6), was nicht der Fall ist für mich arbeiten. Noch nicht vollständig gelöst bei 1.0.1. –