Я использую 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
... и, очевидно, файлы приложения копируются в это местоположение ДО МЭВЕНА, выполняющего небольшую хитрость, показанную выше. Поэтому при локальном тестировании внутри Eclipse в ожидаемом месте вообще отсутствует JavaScript-включение.
Есть ли способ обойти эту проблему? Может быть, изменение Eclipse или изменение Maven, чтобы вытащить файл из «целевого» каталога Maven в каталог «wtpwebapps» Eclipse? Может быть, есть другой подход к решению проблемы, связанной с профилем-включаемым файлом?