Eclipse で Maven を使用して Tomcat を使用する最良の方法を探しています。
Java EE アプリケーションの開発経験があり、Maven を使用する場合も同様の動作を期待しています。
私の要件は簡単です:
- 簡単なアプリケーション構築
- 簡単な導入
- 可能であれば、ホットスワップ
Tomcat + Eclipse がどのように動作するのか詳細がわからないので、Maven コマンドであると想定しました
mvn eclipse:eclipse -Dwtpversion=2.0
すべてを正しくセットアップしますが、うまく機能していない(または少なくとも期待どおりに)のではないかと疑っています。
プロジェクト(テストと呼びましょう)がmavenでビルドされると、結果は${project}/target/test
フォルダーにあります。しかし、Tomcat のクラスは別のフォルダー ( ${project}/target/classes
?) にあるようです。これは私見では間違っています (間違っている場合は訂正してください) が、maven はクラスを構築する前に他のアクション (コード生成、リソース フィルタリング、AOP ウィービングなど) を実行できます。
おすすめの使い方はありますか?コマンドラインから実行mvn clean install
して結果を Tomcat にデプロイするのは、IDE (統合開発環境) とは思えないからです。Maven Eclipse プラグインに正しくセットアップするように指示することは可能ですか?
私も使用しようとしましmvn tomcat:run
たが、ここで私は完全に失われ、エラーが発生しています私は理解していませんfe
java.lang.NoSuchMethodError: org.apache.cxf.common.classloader.ClassLoaderUtils.loadClass
Tomcat 6のサーバーランタイムを使用しているときに、Eclipseから正常に動作しているのに、なぜ動作しないのかわかりません。
mvn install
クラスを保存するときにEclipse に let say を実行するように指示することは可能ですか? それよりもうまくいきますか?それは十分に速いでしょうか(標準のJSEプロジェクトから慣れているように、変更されたものと依存関係のみを再構築します)?
実際に使ってます
- Maven 3.0.4
- ジャバ1.6
- 日食 4.2.1 ( STS 3.2.0.M2)
- tomcat 6 (現在 Tomcat 6 向けに開発中ですが、7 でも同じだと思います)
編集
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>