有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Eclipse+Maven+Tomcat:在使用自定义选项构建战争时测试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的“target”目录拉到Eclipse的“wtpwebapps”目录?也许有另一种方法可以解决特定于概要文件的包含文件问题


共 (1) 个答案

  1. # 1 楼答案

    您可以使用maven cargo插件部署到本地服务器,而不是直接从Eclipse运行。这将使用maven生成的war

    如果您正在进行的测试可以自动化,那么可以将其合并为集成测试套件的一部分,该套件将完全由maven运行