如何在Maven pom.xml中重用application.properties(Spring Boot)中的属性?

时间:2017-04-02 14:43:42

标签: java maven spring-boot flyway

我想在一个地方定义数据库url, username, password。目前我有

application.properties

spring.datasource.url=....
spring.datasource.username=sa
spring.datasource.password=00

pom.xml

  <plugin>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-maven-plugin</artifactId>
    <version>4.1.2</version>
    <configuration>
      <url>....</url>
      <user>sa</user>
      <password>00</password>
    </configuration>
  </plugin>

所以我可能需要重用application.properties 中定义的属性值。

<password>${spring.datasource.password}</password>不起作用。 我也试过

 <systemProperties>
    <systemProperty>
      <name>url</name>
      <value>....</value>
    </systemProperty>
    ...
 </systemProperties>

这两种方法都不起作用。

2 个答案:

答案 0 :(得分:1)

您可以通过从pom文件构建属性文件来执行相反的操作。在您的属性文件中,您可以使用以下内容:

password=${pom.password}

你的pom文件会有类似的内容:

<password>your_db_password</password>

然后在:

mvn clean package

Maven将构建您的属性文件。

这是一个简单的教程:Add Maven Build Information ...

答案 1 :(得分:0)

正如 this 问题的前两个答案(如 rmlan 的评论中所建议的)所建议的那样,使用 properties-maven-plugin 如下:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>properties-maven-plugin</artifactId>
    <version>1.0.0</version>
    <executions>
        <execution>
            <phase>initialize</phase>
            <goals>
                <goal>read-project-properties</goal>
            </goals>
            <configuration>
                <files>
                    <file>${basedir}/src/main/resources/application.properties</file>
                </files>
            </configuration>
        </execution>
    </executions>
</plugin>

然后使用您的 application.properties 执行以下操作:

<plugin>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-maven-plugin</artifactId>
    <version>4.1.2</version>
    <configuration>
        <url>${spring.datasource.url}</url>
        <user>${spring.datasource.username}</user>
        <password>${spring.datasource.password}</password>
    </configuration>
</plugin>