Maven, Java и пользовательские файлы для развертывания - PullRequest
2 голосов
/ 20 мая 2010

У меня есть проект Java, управляемый Maven2. Сценарий, который я пытаюсь решить, следующий: в режиме разработки мне нужно использовать некоторые конфигурационные файлы (например, hibernate.cfg.xml, настроенный для среды разработки), в то время как в производственной среде мне нужно исключить все специфичные для разработки файлы и конфигурации, и вместо этого получить некоторые другие для моего производственная среда. Как я могу справиться с этой ситуацией?

Спасибо

Ответы [ 5 ]

1 голос
/ 25 сентября 2010

Я обработал это с помощью SpringPortPlaceholderConfigurer и включил файлы свойств в classpath и один в файловой системе:

<context:property-placeholder 
    location="classpath*:META-INF/spring/*.properties,file:myapp*.properties"/>

Если в текущем каталоге есть файл myapp * .properties, когда приложение запускается (или запускаются тесты и т. Д.), Оно будет переопределять свойства из файлов, записанных в war / ear / что угодно.

1 голос
/ 21 мая 2010

Лучший способ - просто использовать один файл конфигурации пружины. Spring - лучший выбор для настройки Java-приложений и внедрения зависимостей. На самом деле, Spring поддерживает спящий режим прямо из коробки, так что им действительно легко работать вместе. Как только это будет сделано, вы можете использовать заполнители значений свойств, а затем сконфигурировать Spring 'PropertyPlaceholderConfigurer' для загрузки различных файлов .properties в зависимости от среды, в которой вы запускаете приложение. Пример использования этих заполнителей следующий:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName"><value>${driver}</value></property>
  <property name="url"><value>jdbc:${dbname}</value></property>
</bean>

Хороший пример того, как все это соединить, можно увидеть здесь .

1 голос
/ 20 мая 2010

На этот вопрос нет однозначного ответа, есть много способов справиться с такой ситуацией:

  • с использованием профилей и фильтрации
  • с использованием профилей и различных файлов фильтров
  • использование разных файлов конфигурации и выбор одного из них во время сборки
  • использование специфичных для среды файлов в разных каталогах и создание различных разновидностей

Выбор одного или другого решения зависит от ваших конкретных потребностей.

Смотри также

0 голосов
/ 20 мая 2010

Способ решения этой проблемы - использование наложений Maven WAR. Это хорошо работает в случае, если вы настраиваете / настраиваете сайт на основе базового проекта Maven, для которого у вас нет прав на коммит.

Действительно, вы можете использовать комбинацию наложений файлов Maven WAR и умных файлов проводки Spring XML для решения более общей проблемы настройки сайта, созданного из нескольких веб-приложений. В качестве примера такого подхода рассмотрим проект Danno , над которым я сейчас работаю.

0 голосов
/ 20 мая 2010

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

...