热门代码使用Maven部署tomcat

时间:2010-12-27 21:57:39

标签: tomcat maven

我有一个使用maven构建的Web应用程序。它以不同项目的形式构建,彼此依赖 - 域,dao,服务等。我运行eclipse:eclipse在每个项目中配置我的eclipse环境。所以现在我在eclipse中有多个项目。这是我的发展环境。

我还为Operations人员构建了一个tomcat包,所以我可以为他们提供一个zip文件,他们可以提取并运行一个批处理文件来启动服务器。此zip文件包含war文件,该文件在tomcat的<context>配置中引用。

另外,出于开发目的,我已经设置了tomcat从eclipse中启动。我的目标是在源更改时进行热代码部署。目前这不会发生,因为类文件存在于“target”文件夹中(由于maven的目录结构)。并且tomcat查看war文件(爆炸结构,我的意思是..)

如何配置我的tomcat / eclipse环境,以便开始进行热门代码部署?

-Thanks!

3 个答案:

答案 0 :(得分:12)

我使用tomcat-maven-plugin及其目标tomcat7:run从eclipse中启动tomcat(btw使用m2e插件进行eclipse - 很棒的工具 - 可以从eclipse市场获得)。热代码替换对我也不起作用。但我使用了一种解决方法:使用<contextReloadable>true</contextReloadable> tomcat在检测到文件更改时重新加载应用程序。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <path>/myapp</path>
                <contextReloadable>true</contextReloadable>
            </configuration>
        </plugin>
    </plugins>
</build>

答案 1 :(得分:1)

除非您的应用程序框架支持类重新加载,否则Tomcat本身不会支持热重新部署。 (Tapestry可以,但出于其他原因我不建议使用Tapestry)。我非常肯定eclipse:eclipse也不支持热重新部署,所以你有两件事情不利于你。

我知道有两种选择......首先,切换到使用M2Eclipse而不是eclipse:eclipse。你将不得不摆脱你的旧日食:eclipse配置为此工作。使用m2eclipse会将类从eclipse编译器导出到Tomcat。这避免了中间的“mvn clean package”步骤。一旦你运行m2eclipse,你可以下载JRebel。即使框架本身不支持类重新加载,JRebel也将支持热重新部署。

祝你好运!

答案 2 :(得分:0)

您可以使用“autoDeploy”管理的重新加载机制,您可以阅读它here。我修改了maven-war-plugin以将战争输出到webapp文件夹:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.3</version>
    <configuration>
        <outputDirectory>${my.tomcat.path}</outputDirectory>
    </configuration>
</plugin>

<properties>
    <my.tomcat.path>[MY TOMCAT WEBAPP PATH]</my.tomcat.path>
</properties>

在此之后,我只需要mvn compile war:warmvn compile package