java – Eclipse Maven Tomcat:在使用自定义选项构建WAR时测试Web应用程序

我正在使用Eclipse(Helios)和“m2eclipse”插件.我正在开发一个基于Maven的Web应用程序项目,我在Eclipse内部设置的本地Tomcat服务器上进行测试.

一般来说,这或多或少都有效. “m2eclipse”有时可能是片状的……但是在大多数情况下,它使我的POM和我的Eclipse项目设置保持同步,同样保持部署的代码在Tomcat中保持最新状态.

然而,最近我添加了一个皱纹.我有一个JavaScript包含文件,从测试环境到实际生产环境时需要有所不同.差异太大,无法通过Maven过滤和令牌替换进行干净处理.我需要的是在我的项目中保留两个单独的文件,并且只部署适合构建配置文件的文件.

我用Maven POM中的一些“targetPath”技巧完成了这个:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-war-plugin</artifactId>
   <version>2.1.1</version>
   <configuration>
      <webResources>
         <resource>
            <!-- take the stuff from a "prod" or "non-prod" subdirectory and copy it one level up -->
            <directory>src/main/webapp/js/${profile.name}</directory>
            <targetPath>js</targetPath>
         </resource>
         <resource>
            <!-- now don't deploy those profile-specific subdirectories -->
            <directory>src/main/webapp/js</directory>
            <excludes>
               <exclude>prod</exclude>
               <exclude>non-prod</exclude>
            </excludes>
         </resource>
      </webResources>
   </configuration>
</plugin>

这构建了一个完美的WAR文件,当我部署一些外部Tomcat服务器时,它可以正常工作.但是,问题是Eclipse在Eclipse中运行Tomcat时不使用该WAR文件.相反,Eclipse使用应用程序的爆炸版本,部署到一个神秘的目录,如下所示:

<workspace>/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/MyApp

…显然应用程序的文件被复制到此位置,在Maven执行上面显示的小技巧之前.因此,在Eclipse内部进行本地测试时,预期位置根本不存在JavaScript包含.

有没有解决这个问题的方法?可能是Eclipse更改或Maven更改,将文件从Maven的“目标”目录拉到Eclipse的“wtpwebapps”目录中?也许还有另一种方法来解决特定于配置文件的包含文件问题?

最佳答案
从eclipse(Helios)3.6开始,“Java EE Module Dependencies”选项被“Deployment Assembly”选项取代.您可以在此“部署程序集”选项中配置要部署到Eclipse内部运行的tomcat的文件(项目属性—>部署程序集)

转载注明原文:java – Eclipse Maven Tomcat:在使用自定义选项构建WAR时测试Web应用程序 - 代码日志