1

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

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

我已经走得够远了,Maven 构建器正在运行这些任务并正确过滤资源。但是,当我选择“在服务器上运行”时,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>

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

4

3 回答 3

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 中使用绝对路径。还没找到满意的解决方法...

于 2010-05-18T14:03:42.983 回答
1

我不确定是否支持(过滤的)Web 资源,请参阅MNGECLIPSE-1149。该问题有一个可以为您工作的补丁(和解决方法)。也看看这个线程的 hack 。

于 2010-05-18T11:05:46.083 回答
1

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

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

于 2011-12-20T09:06:12.893 回答