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>
Könnten Sie bitte Ihre Pom posten? Wird die Verpackung in den Krieg versetzt? – guerda
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. –
@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