簡體   English   中英

如何在Spring上下文中插入Maven配置文件屬性

[英]How insert Maven profile properties in Spring context

我創建了兩個Maven的輪廓,因為我想部署我的應用程序的Heroku,所以我必須與位於我的電腦數據庫性能的一個配置文件開發 ,並督促與Heroku的DB屬性。 POM.xml如下

<modelVersion>4.0.0</modelVersion>
<groupId>com.phone-book</groupId>
<artifactId>phone-book</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
    <module>controller</module>
    <module>dao</module>
    <module>model</module>
    <module>service</module>
</modules>
<name>Phonebook web app</name>
<build>
    <filters>
        <filter>profiles/${build.profile.id}/config.properties </filter>
    </filters>
    <resources>
        <resource>
            <filtering>true</filtering>
            <directory>controller/src/main/webapp/WEB-INF/spring</directory>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
                <skipTests>true</skipTests>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.3</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals><goal>copy</goal></goals>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>com.github.jsimone</groupId>
                                <artifactId>webapp-runner</artifactId>
                                <version>8.0.30.2</version>
                                <destFileName>webapp-runner.jar</destFileName>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
<profiles>
    <profile>
        <id>prod</id>
        <properties>
            <build.profile.id>prod</build.profile.id>
        </properties>
    </profile>
    <profile>
        <id>dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <build.profile.id>dev</build.profile.id>
        </properties>
    </profile>
</profiles>

我在包含文件夾devprod的每個maven模塊配置文件中創建了文件夾,並在本教程中編寫了我的道具https://www.petrikainulainen.net/programming/tips-and-tricks/creating-profile-specific-configuration-files- with-maven / Finaly用這個參數創建春天背景,見下文

<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="org.postgresql.Driver" />
    <property name="url" value="${url.property}" />
    <property name="username" value="${user.property}" />
    <property name="password" value="${password.property}" />
    <property name="initialSize" value="20" />
    <property name="maxActive" value="100"/>
</bean>

但是,當我創建我的應用程序時,屬性不會替換,我得到類似的東西Cannot create JDBC driver of class 'org.postgresql.Driver' for connect URL '${url.property}'

我沒有看到您在應用程序上下文中加載具體屬性文件的位置。

我認為您在應用程序上下文中需要類似的東西:

<context:property-placeholder location="classpath:profiles/${build.profile.id}/config.properties" />

控制器模塊的過濾應該在其pom文件中,以便在其構建生命周期中應用它。 這樣,在構建根時應用過濾,而不是在構建控制器模塊時應用過濾。

模塊應將根pom設置為其父級,以便它們可以繼承配置文件和屬性。

似乎您的配置文件屬性與您將屬性復制到的位置不一致

prod:簡介應該是

<profile>
  <id>prod</id>
  <properties>
    <build.profile.id>prod</build.profile.id>
  </properties>
</profile>

將位置屬性復制到類路徑中的某個位置,通常應該是這樣的(除非您在maven中指定了不同的位置)

 <resources>
        <resource>
            <filtering>true</filtering>
            <directory>src/main/resources</directory>
        </resource>
  </resources>

你應該有屬性文件,如,

config.properties

user.property=xxxxx
..

在prod / dev文件夾中

當你運行時,你應該清楚地調用你的mvn配置文件

mvn -P dev清理安裝

要么

mvn -P prod clean install

並且正如@vbhlev建議你需要在bean xml中使用它

<context:property-placeholder location="classpath:/config.properties" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM