使用m2eclipse和WTP构建WAR(处理webResources)

时间:2010-05-18 09:41:40

标签: java eclipse maven-2 m2eclipse eclipse-wtp

我有一种情况,我有一个使用maven构建的Web应用程序(即maven-war-plugin)。对于每个代码修改,我们必须手动启动maven并重新启动应用程序服务器。现在,为了减少构建周期开销,我想使用WTP发布webapp。

现在,我们使用Maven进行资源处理,并且在构建webapp时在我们的POM中定义了一些额外的Maven任务。因此m2eclipse似乎是一个自然的解决方案。

我已经足够了,Maven构建器正在运行这些任务并正确过滤资源。但是,当我选择“Run on Server”时,WAR文件看起来不像我在Maven中构建的那样。

猜测这是因为WTP实际构建了WAR,而不是m2eclipse构建器。因此,即使我们在POM中配置了maven-war-plugin,也不会使用这些设置。

以下是我们的maven-war-plugin配置的代码段。 “webResources”下配置的内容未被选中,它出现:

<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1-alpha-2</version>
<configuration>
 <outputDirectory>${project.build.directory}</outputDirectory>
 <workDirectory>${project.build.directory}/work</workDirectory>
 <webappDirectory>${project.build.webappDirectory}</webappDirectory>
 <cacheFile>${project.build.webappDirectory}/webapp-cache.xml</cacheFile>
 <filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
 <nonFilteredFileExtensions>
  <nonFilteredFileExtension>pdf</nonFilteredFileExtension>
  <nonFilteredFileExtension>png</nonFilteredFileExtension>
  <nonFilteredFileExtension>gif</nonFilteredFileExtension>
  <nonFilteredFileExtension>jsp</nonFilteredFileExtension>
 </nonFilteredFileExtensions>
 <webResources>
 <!-- Add generated WSDL:s and XSD:s for the web service api. -->
   <resource>
   <directory>${project.build.directory}/jaxws/wsgen/wsdl</directory>
   <targetPath>WEB-INF/wsdl</targetPath>
   <filtering>false</filtering> 
   <includes>
     <include>**/*</include>
   </includes>
 </resource>               
 </webResources>
 </configuration>

我是否需要重新配置这些资源以便在其他地方处理,或者是否有更好的解决方案?

3 个答案:

答案 0 :(得分:2)

如果其他人遇到同样的问题,要填写我自己问题的答案,我最后将以下内容添加到我的webapp项目中:

<resource>
  <directory>${project.build.directory}/jaxws/wsgen/wsdl</directory>
  <filtering>true</filtering>
  <targetPath>${project.basedir}/src/main/webapp/WEB-INF/wsdl</targetPath>
  <includes>
    <include>**/*</include>
  </includes>
</resource>

(位于resources下的build元素内)。

它工作正常,因为我的WSDL文件是在generate-resources阶段生成的,并将它们放在target/jaxws/wsgen/wsdl中。然后将它们移动到src/main/webapp/WEB-INF/wsdl,WTP构建器在构建WAR文件时将其选中。

注意:我应该提一下,我现在在Maven的eclipse插件中遇到了一些问题(即mvn eclipse:eclipse),因为显然你不允许在targetPath中拥有绝对路径。尚未找到令人满意的解决方法...

答案 1 :(得分:1)

我不确定(已过滤)的网络资源是否受支持,请参阅MNGECLIPSE-1149。该问题有一个可能适合您的补丁(和解决方法)。另请查看来自this thread的黑客攻击。

答案 2 :(得分:1)

m2e-wtp 0.12及更高版本支持WebResources(与Eclipse Helios和Indigo兼容)。

有关详细信息,请参阅http://community.jboss.org/en/tools/blog/2011/05/03/m2eclipse-wtp-0120-new-noteworthy