Maven копирует applicationContext.xml из src / main / resources в target / myproject / WEB-INF - PullRequest
4 голосов
/ 17 ноября 2011

На данный момент, по умолчанию, я думаю, он копирует в

target/myproject/WEB-INF/classes

так что при развертывании он не поднимает контекст.

Кроме того, я хочу сослаться на файл конфигурации конкретного сервера database.properties , я хочу поместить его в tomcat / conf, а затем сослаться на него в applicationContext.xml , как можно Я делаю это?

Также (2) у меня сложилось впечатление, что это довольно стандартный и приличный способ настроить вещи - пожалуйста, поправьте меня, если я ошибаюсь.

редактировать для конкретного конфигурационного файла сервера я использую это

<context:property-placeholder 
      location="file:${catalina.home}/conf/database.properties" 
      ignore-unresolvable="true"
 />

Ответы [ 2 ]

6 голосов
/ 17 ноября 2011

Если вам нужно сохранить applicationContext.xml в качестве ресурса classpath, вы можете настроить ContextLoaderListener, чтобы выбрать его из classpath, добавив следующие строки в web.xml:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
</context-param>

Это гораздо проще, чем настроить Maven, чтобы скопировать его в WEB-INF.

Что касается второго вопроса, вы можете настроить PropertyPlaceholderConfigurer или <context:property-placeholder> для загрузки файла .properties из файловой системы.

2 голосов
/ 17 ноября 2011

Для вашего заглавного вопроса: часто в модуле .war maven вы помещаете связанные с веб-ресурсами ресурсы в src / main / webapp вместо src / main / resources.Затем плагин maven подберет их автоматически, потому что он соответствует соглашению.Итак, переместите ваш applicationContext.xml в src / main / webapp / WEB-INF

Другой вариант - настроить веб-ресурсы, как описано в документации

Для второговопрос вы можете посмотреть на PropertyPlaceHolderConfigurer .Вам просто нужно будет правильно указать путь.

...