Запустите веб-приложение Maven на сервере из Eclipse с внедрением свойств из профиля.

1

Я использую Eclipse & Maven для создания Spring + Hibernate webapp, а в моем pom.xml меня есть несколько профилей с разными свойствами, которые я вставляю в файл .properties. Этот файл используется в applicationContext.xml для настройки Spring, и когда я хочу запустить приложение, я обязан развернуть его на запущенном tomcat вне Eclipse. Вот некоторые части моего кода:

pom.xml:

...
<profile>
    <id>development</id>
    <properties>
        <db.driverClassName>com.mysql.jdbc.Driver</db.driverClassName>
        <db.name>mydbname</db.name>
        <db.params>?createDatabaseIfNotExist=true&amp;amp;useUnicode=true&amp;amp;characterEncoding=utf-8</db.params>

        <hibernate.hbm2ddl.auto>update</hibernate.hbm2ddl.auto>
        <hibernate.show_sql>true</hibernate.show_sql>

        <log4j.spring.level>WARN</log4j.spring.level>
        <log4j.hibernate.level>WARN</log4j.hibernate.level>
    </properties>
</profile>
...

application.properties:

...
# JDBC Information
# Some properties are in my .m2/settings.xml
jdbc.driver.classname=${db.driverClassName}
jdbc.url=${db.url}/${db.name}${db.params}
jdbc.user=${db.username}
jdbc.pass=${db.password}
...

applicationContext.xml:

...
<!-- JDBC Data Source -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="${jdbc.driver.classname}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.user}" />
    <property name="password" value="${jdbc.pass}" />
</bean>
...

Используя плагин Tomcat7 Maven, развертывание через mvn tomcat7:deploy отлично работает, но когда я выбираю "Щелкните правой кнопкой мыши> Запустить как> Запустить на сервере", я получаю много исключений, связанных с заполнителями:

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'db.driverClassName' in string value "${db.driverClassName}"
    at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:173)
    at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:161)
    at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:125)
    at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:180)
    at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:145)
    at org.springframework.context.support.PropertySourcesPlaceholderConfigurer$2.resolveStringValue(PropertySourcesPlaceholderConfigurer.java:167)
    at org.springframework.beans.factory.config.BeanDefinitionVisitor.resolveStringValue(BeanDefinitionVisitor.java:282)
    at org.springframework.beans.factory.config.BeanDefinitionVisitor.resolveValue(BeanDefinitionVisitor.java:204)
    at org.springframework.beans.factory.config.BeanDefinitionVisitor.visitPropertyValues(BeanDefinitionVisitor.java:141)
    at org.springframework.beans.factory.config.BeanDefinitionVisitor.visitBeanDefinition(BeanDefinitionVisitor.java:82)
    at org.springframework.beans.factory.config.PlaceholderConfigurerSupport.doProcessProperties(PlaceholderConfigurerSupport.java:206)
    ... 17 more

Как я могу запустить свой проект в встроенном в Eclipse Tomcat и получить журналы в консоли, а не в logs/catalina.out?

Спасибо за помощь.

  • 0
    почему у вас просто нет свойств в файле свойств, а не вводить их?
  • 0
    Потому что у меня есть несколько профилей, и значения зависят от профиля, используемого для построения :)
Теги:
maven
spring
tomcat

1 ответ

1
Лучший ответ

Найди его!

Поскольку я использую плагин Maven Eclipse, у меня есть запись "Maven" в свойствах проекта (Project> Properties> Maven). Мне просто нужно было активировать профиль "development", и он сработает!

Изображение 174551

Ещё вопросы

Сообщество Overcoder
Наверх
Меню