我已经使用Maven,Eclipse,WTP设置了多模块环境。 我安装的Eclipse插件是:
m2e
m2e-extras
我有一个依赖于另一个war模块(w1)的war模块(w2),w1有一个web.xml文件,而w2没有它自己的,它使用来自w1的overlay web.xml。每当我点击maven - >更新项目配置,eclipse自动为w2生成一个空的web.xml,我真的不想要。
如何禁用此功能?
答案 0 :(得分:1)
你可以做的是 - 明确排除依赖模块的web.xml
,在打包时,它将从父战争中选择xml:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<overlays>
<!-- Overlay w2 WAR with w1 specific web.xml -->
<overlay>
<groupId>xyz</groupId>
<artifactId>w1</artifactId>
<excludes>
<exclude>WEB-INF/web.xml</exclude>
</excludes>
</overlay>
</overlays>
</configuration>
</plugin>
</plugins>
</build>
干杯!
答案 1 :(得分:1)
默认情况下,m2e-wtp特别要求WTP 不生成 web.xml(如果不存在)并默认添加Dynamic Web Facet 2.5(如果在某些JavaEE 6中检测到某些JavaEE 6依赖项,则添加3.0)类路径)。 WTP创建web.xml的唯一原因是我们要求安装facet版本&lt; = 2.4。但是这些方面只能从现有的web.xml中推断出来。看到讽刺?
所以你看到的很可能是一个bug,你可能想要创建一个错误报告,其中包含一个附加到https://issues.sonatype.org/browse/MECLIPSEWTP的示例项目
与此同时,您可以尝试使用http://download.jboss.org/jbosstools/builds/staging/m2eclipse-wtp-e37/all/repo/提供的m2e-wtp 0.14.0的开发版本,因为我最近对Dynamic Facet版本更改的处理方式进行了更改。
至于第一个回复中描述的叠加排除配置,这对您不起作用,因为您想要专门使用w1的web.xml,而不是排除它。我宁愿颠倒叠加顺序,如:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<overlays>
<overlay>
<groupId>foo.bar</groupId>
<artifactId>w1</artifactId>
</overlay>
<overlay>
<!-- this is the current w2,
it's resources will be overridden by w1
-->
</overlay>
</overlays>
</configuration>
</plugin>