Eclipse + Maven + Tomcat: тестирование веб-приложений при создании WAR с настраиваемыми параметрами

Я использую Eclipse (Helios) с подключаемым модулем m2eclipse.Я работаю над проектом веб-приложения на основе Maven, который тестирую на локальном сервере Tomcat, установленном внутри Eclipse.

Как правило, это работает более или менее отлично. "m2eclipse" иногда может быть нестабильным ... но по большей части он синхронизирует мой POM и мои настройки проекта Eclipse, а также поддерживает актуальность развернутого кода в Tomcat.

Однако недавно я добавил морщину. У меня есть один включаемый файл JavaScript, который должен отличаться при переходе от тестовой среды к реальной производственной среде. Различия слишком значительны, чтобы их можно было легко обработать с помощью фильтрации Maven и подстановки токенов. Мне нужно было сохранить два отдельных файла в моем проекте и развернуть только тот, который подходит для профиля сборки.

Я добился этого с помощью некоторых уловок "targetPath" в моем Maven POM:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-war-plugin</artifactId>
   <version>2.1.1</version>
   <configuration>
      <webResources>
         <resource>
            <!-- take the stuff from a "prod" or "non-prod" subdirectory and copy it one level up -->
            <directory>src/main/webapp/js/${profile.name}</directory>
            <targetPath>js</targetPath>
         </resource>
         <resource>
            <!-- now don't deploy those profile-specific subdirectories -->
            <directory>src/main/webapp/js</directory>
            <excludes>
               <exclude>prod</exclude>
               <exclude>non-prod</exclude>
            </excludes>
         </resource>
      </webResources>
   </configuration>
</plugin>

Это создает идеальный файл WAR , который отлично работает, когда я развертываю его на каком-то внешнем сервере Tomcat. Однако проблема в том, что Eclipse НЕ использует этот WAR-файл при запуске Tomcat внутри Eclipse. Вместо этого Eclipse работает с разобранной версией приложения, развернутой в загадочном каталоге вроде этого:

<workspace>/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/MyApp

... и, по-видимому, файлы приложения копируются в это место ДО того, как Maven выполняет небольшую уловку, показанную выше. Следовательно, при локальном тестировании внутри Eclipse в ожидаемом месте не присутствует никакого включения JavaScript.

Есть ли способ обойти эту проблему? Может быть, изменение Eclipse или изменение Maven, чтобы вытащить файл из «целевого» каталога Maven в каталог «wtpwebapps» Eclipse? Может быть, есть другой подход к решению проблемы с включаемым файлом для конкретного профиля?

8
задан Steve Perkins 24 June 2011 в 17:18
поделиться