首页 > 解决方案 > Maven:运行测试时不会拾取配置文件属性

问题描述

在 pom.xml 中,我定义了一个属性:

 <profile>
            <id>local</id>
            <properties>
                <build.profile.id>local</build.profile.id>
                <serverBaseUrl>http://127.0.0.1:8080</serverBaseUrl>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>

并且serverBaseUrl在文件 application-email.xml 中被引用:

<bean id="MailService" class="someclass">
        <property name="aurl" value="${serverBaseUrl}"/>

    </bean>

我希望在运行测试、使用 IntelliJ IDEA 或使用 Maven 测试时,可以自动从 pom.xml 中获取 ${serverBaseUrl}。但是,它不像我期望的那样工作。

当不运行测试时,事情完全符合我的预期。

这里有什么问题?默认情况下运行测试时,maven 或 IntelliJ IDEA 是否不会获取配置文件属性?运行测试时如何获取配置文件的属性?

目前,我有一个解决方法:serverBaseUrl=xxx在 config.properties 中定义并获取该属性。这有点难看,我想避免。

标签: javamavenintellij-idea

解决方案


这更像是在黑暗中拍摄,我无法测试它。

在您的部分添加resources标签:buildpom.xml

<build>
.....
    <testResources>
        <testResource>
            <directory>src/test/resources</directory>
            <filtering>true</filtering>
             <includes>
                <include>application-email.xml</include>
            </includes>
        </testResource>
    </testResources>
....
  </build>

我想你在文件夹application-email.xml里面。src/test/resources


推荐阅读