Как избежать maven WTP с включенным проектом автоматически генерирует web.xml? - PullRequest
0 голосов
/ 30 августа 2011

У меня настроена мультимодульная среда с Maven, Eclipse, WTP.Установленные мной Eclipse-плагины:

  • m2e

  • m2e-extras

  • m2e-оверлей

У меня есть военный модуль (w2), который зависит от другого военного модуля (w1), у w1 есть файл web.xml,и у w2 нет своего, он использует наложение web.xml от w1.Всякий раз, когда я нажимаю maven -> Обновить конфигурацию проекта, eclipse автоматически генерирует пустой файл web.xml для w2, который мне действительно не нужен.

Как это отключить?

Ответы [ 2 ]

1 голос
/ 01 сентября 2011

По умолчанию m2e-wtp специально просит WTP не создавать web.xml, если его нет, и добавляет Dynamic Web Facet 2.5 по умолчанию (или 3.0, если в classpath обнаружены некоторые зависимости JavaEE 6).Единственная причина, по которой WTP создаст файл web.xml, заключается в том, что мы попросим установить фазовую версию <= 2.4.Но эти аспекты могут быть выведены только из существующего файла web.xml.Видите иронию? </p>

Так что, скорее всего, вы видите ошибку, и вы можете создать отчет об ошибке с примером проекта, прикрепленным к https://issues.sonatype.org/browse/MECLIPSEWTP

А пока вы можете попробоватьиспользовать dev-сборку m2e-wtp 0.14.0, доступную из http://download.jboss.org/jbosstools/builds/staging/m2eclipse-wtp-e37/all/repo/,, поскольку я недавно внес изменения в способ обработки изменений версии 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>
1 голос
/ 30 августа 2011

Что вы можете сделать - явно исключить 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>

Cheers!

...