如何避免maven启用WTP项目自动生成web.xml?

时间:2011-08-30 03:21:27

标签: eclipse maven maven-2 eclipse-wtp

我已经使用Maven,Eclipse,WTP设置了多模块环境。 我安装的Eclipse插件是:

  • m2e

  • m2e-extras

  • m2e-overlay

我有一个依赖于另一个war模块(w1)的war模块(w2),w1有一个web.xml文件,而w2没有它自己的,它使用来自w1的overlay web.xml。每当我点击maven - >更新项目配置,eclipse自动为w2生成一个空的web.xml,我真的不想要。

如何禁用此功能?

2 个答案:

答案 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>