繁体   English   中英

如何在Eclipse中正确使用Tomcat与maven

[英]How to use Tomcat with maven correctly in Eclipse

我正在寻找如何在Eclipse中使用Macat的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 它会起作用吗? 这是否足够快(重建只改变了东西+依赖关系,因为我习惯于从标准的JSE项目)?

其实我正在使用

  • maven 3.0.4
  • java 1.6
  • eclipse 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>

我通常只使用m2eclipse Maven插件并将项目导入eclipse。

如果你使用mvn eclipse:eclipse ,Maven会创建特定于Eclipse的项目设置。 这样,Eclipse就不会执行Maven命令来在Eclipse中开发应用程序。 Eclipse会一如既往地自动将您的应用程序部署到嵌入式Tomcat。

如果你进行测试构建或生产构建,那么你使用Maven(例如mvn package deploy )这将创建war文件并将其部署到Nexus(或任何其他工件库,如果已配置)。 target/文件夹中,您将找到artifactId-version.war ,您可以在任何所需的Tomcat上部署它。

这是一篇包含更多提示的文章: https//jacksonps4.me/wordpress/? p = 1013

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM