webentwicklung-frage-antwort-db.com.de

Eclipse WTP veröffentlicht keine Maven-Abhängigkeiten

Ich versuche, ein grundlegendes Hallo-Welt-Projekt mit Eclipse Indigo und einem Tomcat-Server einzurichten. Ich habe ein dynamisches Projekt mit einem einfachen Servlet erstellt. Das Servlet getestet und das hat gut funktioniert. Dann habe ich die Maven-Unterstützung aktiviert und meinem Pom Logback hinzugefügt. Ich habe eine Protokollierungsanweisung in die doGet-Methode des Servlets eingefügt. Wenn das Servlet ausgeführt wird, beschwert es sich, dass es keine Bindungen finden kann, da die Logback-Jars nicht in die Eclipse Tomcat-Instanz kopiert werden. Ich habe erwartet, dass die Gläser irgendwo hier veröffentlicht werden:

${workspace}\.metadata\.plugins\org.Eclipse.wst.server.core\tmp0\

Wie kann ich Eclipse richtig mit WTP/Maven zusammenarbeiten lassen? Ich habe auch versucht, den m2e-wtp-Connector ohne Unterschied zu installieren.

20
dcompiled

Überprüfen Sie Deployment Assembly (Kontextmenü des Projekts), es muss Mapping Maven-Abhängigkeiten -> WEB-INF/lib geben.

51
e-zinc

Ich komme aus einem ASP.NET-Hintergrund und finde es schockierend, wie viel Arbeit es kostet, eine Webapp mit Eclipse WTP und Maven zum Laufen zu bringen, vor allem, wenn Sie alleine lernen. Ich hoffe, diese Kurzanleitung hilft jemandem, sich schnell einarbeiten zu können.

Es gibt zwei Möglichkeiten, um ein Hallo-Welt-Projekt in Eclipse WTP mit Maven zusammenarbeiten zu lassen. Sie können ein dynamisches Webprojekt erstellen und dann die Maven-Natur hinzufügen, oder Sie können das Gegenteil tun.

Voraussetzungen für Eclipse mit Update-Sites

Startkonfiguration

  • Installieren Sie eine Kopie von Tomcat 7 von http://Tomcat.Apache.org/download-70.cgi

  • Fenster -> Einstellungen -> Server -> Laufzeitumgebung

  • Fügen Sie Apache Tomcat 7.0 hinzu und wählen Sie das lokale Installationsverzeichnis aus

Option 1: Dynamisches Webprojekt erstellen und dann Maven Nature hinzufügen

  • Erstellen Sie ein neues Maven-Projekt und wählen Sie Archetype Org.Apache.maven.archetypes: maven-archetype-webapp

  • Wechseln Sie in die Java EE-Perspektive.

  • Erstellen Sie einen neuen Quellordner, src\main\Java. Beachten Sie, dass Eclipse nicht intelligent genug ist, um dies für Sie auszuführen, und auch die Reihenfolge der Ordner ist falsch. Src\main\Java Ordner ist nach src\main\resources) aufgelistet. Dies kann später in den Projekteigenschaften manuell korrigiert werden.

  • Erstellen Sie ein neues Servlet. Beachten Sie, dass Eclipse diese Datei im falschen Ordner src\main\resources standardmäßig verwendet, da die Reihenfolge falsch ist. Wählen Sie stattdessen manuell src\main\Java. Ändern Sie die URL-Zuordnung auf der zweiten Seite des Assistenten in/*, um das Testen zu erleichtern.

  • Jetzt ist unser Servlet fertig, aber die Abhängigkeiten von der Servlet-API sind ungebunden. A) wir können die Servlet-API als Abhängigkeit zu unserem Projekt hinzufügen oder B) wir können an die Eclipse-Serverkonfiguration für Apache 7.0 binden.

  • Fügen Sie für Option A diese Abhängigkeit zum Pom hinzu:

.

<dependency>
  <groupId>org.Apache.Tomcat</groupId>
  <artifactId>Tomcat-api</artifactId>
  <version>7.0.${set this}</version>
  <scope>provided</scope>
</dependency>
  • Für Option B:

    • Projekteigenschaften -> Java Build Path -> Bibliotheken -> Bibliothek hinzufügen -> Server-Laufzeit -> Apache Tomcat 7.0
    • Rechtsklicke und auf Server ausführen:
  • Im internen Browser sollte eine leere Seite angezeigt werden, z. B. http: // localhost: 8080/ $ {artefakt}

Test der Abhängigkeitsveröffentlichung :

  • Fügen Sie Joda-Zeit zum Pom hinzu.

  • Fügen Sie diese Zeile in das zuvor für die doGet-Methode erstellte Servlet ein, und importieren Sie die erforderlichen Abhängigkeiten:

.

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.getWriter().println("The time is now: " + new DateTime().toString());
}

Laden Sie die Testseite neu und die Ausgabe sollte nun wie folgt aussehen:

Es ist jetzt Uhr: 2012-03-03T14: 14: 29.890-05: 00

Wenn Sie nun mit Servlet 3.0 und Anmerkungen spielen möchten, ist dies standardmäßig nicht aktiviert, weshalb ich es nicht weiß. Zuerst zwingen Sie Maven, Java 1.6 zu verwenden, indem Sie dies zu Ihrem Pom hinzufügen, ansonsten jedes Mal Aktualisieren Sie Ihr Pom. Die Konfiguration wird auf Java 1.5 zurückgesetzt.

  <plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
      <source>1.6</source>
      <target>1.6</target>
    </configuration>
  </plugin>

Öffnen Sie Projekteigenschaften -> Projektfacetten. Ändern Sie die Version unter "Dynamic Web Module" auf 3.0, ändern Sie Java Version 1.6

Erstellen Sie ein neues Servlet mit dem Klassennamen AnnotatedServlet in src\main\Java, und beachten Sie, wie die @WebServlet-Annotation automatisch erstellt wird.

Option 2: Dynamisches Webprojekt erstellen und dann Maven Nature hinzufügen

  • Wählen Sie Tomcat Runtime und Dynamic Module Version 3.0 aus 
  • Erstellen Sie den Quellordner src\main\Java 
  • Legen Sie das Standardausgabeziel\Klassen fest 
  • Legen Sie das Kontextverzeichnis src\main\webapp fest
  • Prüfen Sie, ob web.xml generiert wurde
  • Erstellen Sie ein Servlet mit Mapping/* zum schnellen Testen
  • Fügen Sie der doGet-Methode eine Ausgabeanweisung hinzu

response.getWriter().println("Another test");

  • Doppelklicken Sie auf den "Bereitstellungsdeskriptor" und fügen Sie dieses Attribut zum Stammelement der Webanwendung hinzu. metadata-complete="false"

  • Klicken Sie mit der rechten Maustaste auf Projekt und wählen Sie Ausführen als -> Auf Server ausführen

  • Klicken Sie mit der rechten Maustaste auf Projekt -> Konfigurieren -> In Maven-Projekt konvertieren
  • Wähle Verpackung als Krieg
  • Bearbeiten Sie pom und stellen Sie den Compiler so ein, dass er Java 1.6 verwendet, und fügen Sie eine joda-time-Abhängigkeit hinzu:

.

<dependencies>
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.1</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>
</build>
13
dcompiled

Klicken Sie im Projekt-Explorer mit der rechten Maustaste auf das Webprojekt, und wählen Sie dann Maven -> Projekt aktualisieren

1
Igal Dvir

Ich hatte ein ähnliches Problem und obwohl ich Deployment Assembly richtig konfiguriert hatte, funktionierte es immer noch nicht. Dann fand ich, dass unter Fenster -> Einstellungen -> Meine Eclipse -> Java Enterprise Project -> Webprojekt auf der Registerkarte Bereitstellung die Verwaltung abhängiger Projekte deaktiviert wurde. Ich änderte es, um Gläser mit abhängigen Projekten in den lib-Ordner zu stellen, und alles funktionierte wie ein Zauber. Ich könnte sogar die Deployment Assembly-Option deaktivieren.

0
vanval