powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / maven profile и spring property-placeholder prifile
4 сообщений из 4, страница 1 из 1
maven profile и spring property-placeholder prifile
    #38764436
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем добрый день :

не могу понять где ошибка , при разнесении конфигов по файлам:
т.е для локальной сборки mvn -Pdev - брать значения из файла classpath:spring.properties
а для prod - брать значения из файла в etc
<context:property-placeholder location="file:///etc/tomcat/spring.properties"/>

при этом когда пытаюсь указать профиль - значения не находятся ???


и так что есть pom.xml набором профилей : dev , prod
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
   <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <platform>linux</platform>
                <profile.name>dev</profile.name>
                <skipTests>false</skipTests>
                <hibernate.dialect>org.hibernate.dialect.MySQL5InnoDBDialect</hibernate.dialect>
                <hibernate.hbm2ddl>update</hibernate.hbm2ddl>
                <hibernate.showsql>true</hibernate.showsql>
                <jdbc.driver>com.mysql.jdbc.Driver</jdbc.driver>
                <jdbc.url>jdbc:mysql://localhost/db_front</jdbc.url>
                <jdbc.username>root</jdbc.username>
                <jdbc.password>root</jdbc.password>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <platform>linux</platform>
                <profile.name>prod</profile.name>
                <skipTests>true</skipTests>
                <hibernate.dialect>org.hibernate.dialect.MySQL5InnoDBDialect</hibernate.dialect>
                <hibernate.hbm2ddl>validate</hibernate.hbm2ddl>
                <hibernate.showsql>false</hibernate.showsql>
                <jdbc.driver>com.mysql.jdbc.Driver</jdbc.driver>
                <jdbc.url>jdbc:mysql://prod/db_front</jdbc.url>
                <jdbc.username>user</jdbc.username>
                <jdbc.password>user</jdbc.password>
            </properties>
        </profile>
  </profiles>



при этом все эти значения skipTests , hibernate , jdbc.url итд

с помощью плагина - попадают в один файл spring.properties в сборку ,но в продакшене они уже лежат в файле на диске.


Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
                <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>properties-maven-plugin</artifactId>
                <version>1.0-alpha-2</version>
                <executions>
                    <execution>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>write-project-properties</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <outputFile>
                        target/classes/spring.properties
                    </outputFile>
                </configuration>
            </plugin>




в самих спринговых кофигах указано что :
web.xml
Код: xml
1.
2.
3.
4.
   <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/conf/appContext.xml</param-value>
    </context-param>



appContext.xml
Код: xml
1.
2.
3.
4.
5.
<!-- было -->
<!--<context:property-placeholder location="classpath:spring.properties" />-->
<!-- стало -->
       <import resource="devContext.xml"/>
       <import resource="prodContext.xml"/>



prodContext.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd"
       profile="prod">
    <context:property-placeholder location="file:///etc/tomcat/spring.properties"/>
</beans>



devContext.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd"
profile="dev">
    <context:property-placeholder location="classpath:spring.properties" />
</beans>




при этом если убрать profile="dev" - то все видится нормально ?!

Как такое может быть? хочется чтобы поведение было такое :

указываю - dev - видится файл в сборке .
Указываю - prod - видится файл на диске.
...
Рейтинг: 0 / 0
maven profile и spring property-placeholder prifile
    #38766747
kadet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,
у нас в проекте различия между средами хранятся в файлах-настройках, например:
env_develop.properties
env_product.properties

Далее в applicationContext.xml, например так:

Код: xml
1.
2.
3.
4.
	
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
	<property name="location" value="classpath:env_#{systemProperties['current_environment']}.properties" />
</bean>



в зависимости от места вызова передаешь аргумент
Код: java
1.
-Dcurrent_environment=develop


можно так же в maven-профиле объявить системную переменную:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
		<profile>
			<id>DEVELOP</id>

			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-compiler-plugin</artifactId>
						<version>3.1</version>
						<configuration>
							<source>1.7</source>
							<target>1.7</target>
						</configuration>
					</plugin>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-surefire-plugin</artifactId>
						<version>2.17</version>
						<configuration>
							<systemProperties>
								<property>
									<name>current-environment</name>
									<value>develop</value>
								</property>								
							</systemProperties>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>


и вызывать
Код: java
1.
mvn -PDEVELOP clean compile
...
Рейтинг: 0 / 0
maven profile и spring property-placeholder prifile
    #38766751
kadet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kadetв зависимости от места вызова передаешь аргумент
Код: java
1.
-Dcurrent_environment=develop



извените, вызов будет
Код: java
1.
-Dcurrent-environment=develop
...
Рейтинг: 0 / 0
maven profile и spring property-placeholder prifile
    #38767516
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kadet,

Спасибо !

так работает .

У меня немного другая проблема , когда указываю в одном случае
Код: xml
1.
 <context:property-placeholder location="file:///etc/tomcat/spring.properties"/>


в другом

Код: xml
1.
 <context:property-placeholder location="classpath:spring.properties" />



поблема как размести и научить понимать разные источники : classpath и file ?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / maven profile и spring property-placeholder prifile
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]