8

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>
4

2 に答える 2

4

私は通常、m2eclipse Maven プラグインを使用して、プロジェクトを Eclipse にインポートします。

于 2013-03-04T12:29:17.250 に答える
2

を使用する場合mvn eclipse:eclipse、Maven は Eclipse に固有のプロジェクト設定を作成します。このように、Eclipse 内でアプリケーションを開発するために、Eclipse によって Maven コマンドが実行されることはありません。Eclipse は、いつものようにアプリケーションを組み込みの Tomcat に自動的にデプロイします。

テスト ビルドまたはプロダクション ビルドを行う場合は、Maven を使用します (例: mvn package deploy)。これにより、war ファイルが作成され、Nexus (構成されている場合は他のアーティファクト リポジトリ) にデプロイされます。target/フォルダに、必要な Tomcat にデプロイできる が見つかりますartifactId-version.war

いくつかのヒントを含む記事を次に示します: https://jacksonps4.me/wordpress/?p=1013

于 2013-03-04T12:27:01.840 に答える