在POM中访问Spring配置文件特定的应用程序属性

时间:2018-02-08 16:34:20

标签: spring maven spring-boot

我找不到任何解释如何在pom.xml内访问弹簧配置文件特定应用程序属性的内容。这可能吗?我找到了很多关于做相反事情的信息(在应用程序中访问Maven配置文件属性),但没有任何内容。

我的具体用例是能够从如下所示的属性文件中设置Tomcat插件中的Tomcat管理器URL。请记住,我的问题只是标题中的内容,而且我没有要求帮助配置Tomcat插件,因此我不会将其包含在问题标签中。

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <url>${tomcat.manager.url}</url>
        <server>${tomcat.server.name}</server>
    </configuration>
</plugin>

我在POM中有这些个人资料:

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <activatedProperties>dev</activatedProperties>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>test</id>
        <properties>
            <activatedProperties>test</activatedProperties>
        </properties>
    </profile>
</profiles>

这是在同一个POM的构建元素中:

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

在我的application.properties

# active profile placeholder for the active maven profile. Defaults to dev.
spring.profiles.active=@activatedProperties@

和我的application-test.properties

tomcat.manager.url=http://mydomain:8080/manager/text
tomcat.server.name=myserver

但是当我跑_

mvn tomcat7:redeploy -DskipTests -P test

它不会尝试部署到http://mydomain:8080/manager/text,而是使用默认值localhost:8080

2 个答案:

答案 0 :(得分:1)

查看read-project-propertiesProperties Maven Plugin目标:

  

read-project-properties目标读取属性文件和URL,并将属性存储为项目属性。

所以,将以下内容添加到您的POM中:

  <build>
    <plugins>
      <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>${project.basedir}/src/main/resouces/application-test.properties</file>
              </files>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

答案 1 :(得分:1)

将以下内容添加到您的pom

   <profiles>
    <profile>
        <id>dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <spring.profiles.active>dev</spring.profiles.active>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <spring.profiles.active>prod</spring.profiles.active>
        </properties>
    </profile>
</profiles>

在application.properties配置中 spring.profiles.active =@spring.profiles.active @

运行如下: 生产:MVN清洁包装-Pprod 开发:mvn clean软件包-Pdev