Как перезаписать файлы в файле WAR во время сборки maven?
У меня есть проект веб-приложения на Java, который я разрабатываю в Eclipse (точнее, MyEclipse 10) и создаю с использованием Maven 3.
У меня есть следующий макет (включая только файлы, относящиеся к моей проблеме:
project root
|-- src
| |-- main
| | |-- java
| | |-- resources
| | | |-- log4j.xml
| | | +-- struts.properties
| | |-- webapp
| | | |-- META-INF
| | | | +--context.xml
| | |-- config
| | | |-- test
| | | | |--log4j.xml
| | | | |--struts.properties
| | | | +--context.xml
| | | +-- prod
| | | | |--log4j.xml
| | | | |--struts.properties
| | | | +--context.xml
| +--test
+--pom.xml
Как видите, я включил несколько файлов конфигурации. Тот, кто находится в нужном месте в рамках проекта, то есть внутриsrc/main/resources
а такжеsrc/main/webapp
те, которые я обычно использую, когда я работаю в MyEclipse. Я могу использовать коннекторы MyEclipse для автоматического обновления развертывания, например, до экземпляр Tomcat на моей машине разработчика. Я просто нажимаюзапустить сервер " и я могу отлаживать. Нет необходимости вообще использовать Maven в этом контексте.
Затем, когда я хочу создать релиз для другой среды, такой как тестирование или производство, я запускаюmvn -P test clean install
и это создает хорошую войну.
Моя цель состоит в том, чтобы заменить файлы конфигурации внутри окончательной WAR на файлы в.src/config/{environment}/
Я установил профили в моем:pom.xml
test
test
prod
prod
Затем я пытаюсь скопировать эти ресурсы из указанного профиля (используяenvironment
переменная) в правильное место внутри WAR (или во временную папку, которая будет заархивирована в WAR):
/src/main/config/${environment}
META-INF/
context.xml
src/main/config/${environment}
WEB-INF/classes/
struts.properties
log4j.xml
Теперь это, кажется, работает, за исключением того, чтостандарт» После этого ресурсы копируются в каталог, поэтому они перезаписывают эти файлы. Так что я всегда получаю, например,log4j.xml
отsrc/main/resources
вместо того, чтобы сказатьsrc/main/configuration/prod/
Выписка из вывода Maven:
[INFO] Processing war project
[INFO] Copying webapp webResources [D:\workspace\MyProject/src/main/config/prod] to [D:\workspaces\SITEL\Webfauna\target\Webfauna]
[INFO] Copying webapp webResources [D:\workspace\MyProject\src/main/config/prod] to [D:\workspaces\SITEL\Webfauna\target\Webfauna]
[INFO] Copying webapp resources [D:\workspace\MyProject\src\main\webapp]
Как вы можете видеть в последней строке, материал изsrc/main/webapp
копируется ПОСЛЕ, таким образом перезаписывая мои пользовательские файлы :(
Мой вопрос: как заставить Maven использовать файлы »из активированного профиля " и каким-то образом переписатьестественно» файлы?