我有一个使用maven构建的Web应用程序。它以不同项目的形式构建,彼此依赖 - 域,dao,服务等。我运行eclipse:eclipse在每个项目中配置我的eclipse环境。所以现在我在eclipse中有多个项目。这是我的发展环境。
我还为Operations人员构建了一个tomcat包,所以我可以为他们提供一个zip文件,他们可以提取并运行一个批处理文件来启动服务器。此zip文件包含war文件,该文件在tomcat的<context>
配置中引用。
另外,出于开发目的,我已经设置了tomcat从eclipse中启动。我的目标是在源更改时进行热代码部署。目前这不会发生,因为类文件存在于“target”文件夹中(由于maven的目录结构)。并且tomcat查看war文件(爆炸结构,我的意思是..)
如何配置我的tomcat / eclipse环境,以便开始进行热门代码部署?
-Thanks!
答案 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)
我知道有两种选择......首先,切换到使用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:war
或mvn compile package