2013-03-04 12 views
8

Ich bin auf der Suche nach dem besten Weg, Tomcat in Eclipse mit Maven zu verwenden.Wie man Tomcat mit Maven korrekt in Eclipse verwendet

Ich habe Erfahrung in der Entwicklung von Java EE-Anwendungen und erwarte ein ähnliches Verhalten bei der Verwendung von Maven.

Meine Anforderungen sind einfach:

  • einfache Anwendung Gebäude
  • einfache Bereitstellung
  • wenn möglich, Hot-Swap-

Ich weiß nicht, wie Tomcat + Eclipse-Arbeit im Detail so ich angenommen, dass Maven Befehl

mvn eclipse:eclipse -Dwtpversion=2.0 

Setups alles richtig, aber ich habe Verdacht, es funktioniert nicht gut (oder zumindest wie erwartet).

Wenn Projekt (nennen wir es Test) in Maven erstellt wird, ist das Ergebnis in ${project}/target/test Ordner. Aber es scheint mir, dass Klassen für Tomcat aus verschiedenen Ordnern (${project}/target/classes?) Sind. Dies ist IMHO falsch (korrigiere mich, wenn ich falsch liege), aber Maven kann andere Aktionen vor dem Erstellen von Klassen - Codegenerierung, Ressourcenfilterung, AOP Weaving und so weiter.

Gibt es einige Empfehlungen, wie man es benutzt? Die Ausführung von mvn clean install über die Befehlszeile und das Bereitstellen des Ergebnisses in Tomcat klingt für mich nicht als IDE (Integrierte Entwicklungsumgebung). Es ist möglich, maven eclipse plugin anzuweisen, es richtig einzurichten?

Ich habe auch versucht, mvn tomcat:run zu verwenden, aber hier bin ich völlig verloren, ich bekomme Fehler, die ich nicht verstehe f.E.

und ich habe keine Ahnung, warum es nicht funktioniert, während Serverlaufzeit für Tomcat 6 funktioniert gut aus Eclipse.

Ist es möglich, Eclipse anweisen zu lassen, sagen wir mvn install, wenn ich die Klasse speichere? Wird es funktionieren als? Ist das schnell genug (nur geänderte Dinge + Abhängigkeiten wiederherstellen, wie ich es von Standard-JSE-Projekten gewöhnt bin)?

Eigentlich

Ich verwende
  • Maven 3.0.4
  • Java 1.6
  • Eclipse 4.2.1 (STS 3.2.0.M2)
  • tomcat 6 (wir entwickeln derzeit für 6 Tomcat, aber ich denke, es ist das gleiche für 7)

bearbeiten

einige relevante Teile von pom.xml

<project ...> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>...</groupId> 
    <artifactId>...</artifactId> 
    <version>...</version> 
    <packaging>war</packaging> 

    <properties> 
     <spring.version>3.1.1.RELEASE</spring.version> 
     <!-- WSDL -> Java (start) --> 
     <cxf.version>2.7.3</cxf.version> 
     <cxf-codegen-plugin.version>2.6.1</cxf-codegen-plugin.version> 
     <cxf.sourceRoot>src/main/generated</cxf.sourceRoot> 
     <!-- WSDL -> Java (end) --> 

     <junit.version>4.11</junit.version> 
     <maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format> 
     <project.build.date>${maven.build.timestamp}</project.build.date> 
    </properties> 

    <dependencies> 
     ... 
    </dependencies> 


    <build> 

     <resources> 
      <resource> 
       <!-- filtering used to replace variables from in property files --> 
       <filtering>true</filtering> 
       <directory>${basedir}/src/main/java</directory> 
       <excludes> 
        <exclude>**/*.java</exclude> 
       </excludes> 
      </resource> 

      <resource> 
       <filtering>false</filtering> 
       <directory>${basedir}/src/main/resources</directory> 
      </resource> 
     </resources> 

     <plugins> 
      <!-- add src/main/generated for maven --> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>build-helper-maven-plugin</artifactId> 
       <version>1.7</version> 
       <executions> 
        <execution> 
         <phase>generate-sources</phase> 
         <goals> 
          <goal>add-source</goal> 
         </goals> 
         <configuration> 
          <sources> 
           <source>src/main/generated</source> 
          </sources> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

      <!-- WSDL -> Java (start) --> 
      <plugin> 
       <!-- !!! READ !!! --> 
       <!-- mvn cxf-codegen-plugin:wsdl2java NOT working, comment phase and run "mvn clean install -DskipTests") --> 
       <groupId>org.apache.cxf</groupId> 
       <artifactId>cxf-codegen-plugin</artifactId> 
       <version>${cxf-codegen-plugin.version}</version> 
       <executions> 
        ... 
       </executions> 
      </plugin> 
     </plugins> 

     <pluginManagement> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <version>2.5.1</version> 
        <inherited>true</inherited> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <configuration> 
         <source>1.6</source> 
         <target>1.6</target> 
         <encoding>UTF-8</encoding> 
        </configuration> 
       </plugin> 

       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <version>2.1.1</version> 
        <artifactId>maven-war-plugin</artifactId> 
        <configuration> 
         <warName>test</warName> 
        </configuration> 
       </plugin> 

       <!-- resources in UTF-8 --> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-resources-plugin</artifactId> 
        <version>2.5</version> 
        <configuration> 
         <encoding>UTF-8</encoding> 
        </configuration> 
       </plugin> 

       <!-- JUnit --> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <version>2.8</version> 
        <configuration> 
         <redirectTestOutputToFile>true</redirectTestOutputToFile> 
        </configuration> 
       </plugin> 

       <plugin> 
        <artifactId>maven-eclipse-plugin</artifactId> 
        <configuration> 
         <wtpversion>1.5</wtpversion> 
        </configuration> 
       </plugin> 
      </plugins> 
     </pluginManagement> 
    </build> 
</project> 
+1

Könnten Sie bitte Ihre Pom posten? Wird die Verpackung in den Krieg versetzt? – guerda

+0

Sie benötigen die Serveransicht, klicken mit der rechten Maustaste und fügen den Server hinzu und wählen Tomcat. Anschließend können Sie Ihre Webprojekte in Eclipse bereitstellen. Das unterstützt auch den Hot-Swap. –

+0

@furtelwart: meine tatsächliche pom.xml ist zu groß, um es hier zu posten (eine Menge Zeug ist für diese Frage irrelevant), aber antworte auf deinen Kommentar ist, dass ich ' Krieg' in meinem Pom und auch ' maven-war-plugin 'konfiguriert, mein Problem ist nicht, dass es nicht funktioniert, aber es ist nur zu kompliziert ... @Bob Flannigon: das ist richtig, aber es nimmt falsche Ordner ($ {Projekt}/Ziel/Klassen) wie ich in meiner Frage geschrieben habe ... – Betlista

Antwort

2

Wenn Sie mvn eclipse:eclipse, erstellt Maven die Projekteinstellungen spezifisch für Eclipse. Auf diese Weise wird kein Maven-Befehl von Eclipse ausgeführt, um Ihre Anwendung in Eclipse zu entwickeln.Eclipse stellt Ihre Anwendung wie immer automatisch auf dem eingebetteten Tomcat bereit.

Wenn Sie einen Test- oder Produktions-Build erstellen, verwenden Sie Maven (z. B.). Dadurch wird die WAR-Datei erstellt und in einem Nexus (oder einem anderen Artefakt-Repository, falls konfiguriert) bereitgestellt. In Ihrem Ordner target/ finden Sie dann eine artifactId-version.war, die Sie auf jedem gewünschten Tomcat bereitstellen können.

Hier ist ein Artikel mit weiteren Hinweisen: https://jacksonps4.me/wordpress/?p=1013

4

ich normalerweise nur verwenden m2eclipse Maven Plugin und das Projekt in Eclipse importieren.

+0

Ich benutze auch m2e, es ist Teil von STS, aber es gibt kein Problem mit dem Import oder dem Erstellen in Eclipse, aber das Bereitstellen und Ausführen in Tomcat ... – Betlista

+2

Sie brauchen das m2e WTP Erweiterung. Verwenden Sie keine Eclipse: Eclipse. –

+0

Hier ist ein Video-Tutorial zur Verwendung von m2e-WTP http://www.youtube.com/watch?v=TksoKkSP208 –

Verwandte Themen