我有一种情况,我有一个使用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>
我是否需要重新配置这些资源以便在其他地方处理,或者是否有更好的解决方案?
答案 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