mvn test - 覆盖application.properties中的值

时间:2018-04-06 08:01:13

标签: java spring maven application.properties

我在application.properties

中有这些属性
spring.datasource.url=jdbc:postgresql://localhsost:5432/myDatabase
spring.datasource.username=myUsername

我想使用除上述值之外的其他值运行mvn test,例如:

spring.datasource.url=jdbc:postgresql://my.test.server.com:5432/myDatabase
spring.datasource.username=anotherUsername

我尝试了以下

mvn test -Drun.arguments='--spring.datasource.jdbc:postgresql://my.test.server.com:5432/myDatabase --spring.datasource.username=anotherUsername'

且没有spring前缀:

mvn test -Drun.arguments='--datasource.jdbc:postgresql://my.test.server.com:5432/myDatabase --datasource.username=anotherUsername'

但这似乎不起作用。如何在运行application.properties

的上下文中覆盖mvn test中的值

4 个答案:

答案 0 :(得分:4)

这样的事情应该有效:

  <plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.20.1</version>
    <configuration>
      <systemPropertyVariables>
        <spring.datasource.jdbc>value</spring.datasource.jdbc>
      </systemPropertyVariables>
    </configuration>
  </plugin>

但更常见的做法是将application.properties的测试版本放入src/test/resources。在测试期间,该文件将具有更高的优先级。

答案 1 :(得分:1)

选项1 首选,因为Maven结构特定

application.properties下创建test/resources,以便为测试目的而选择

选项2 Spring Test仅对特定测试类进行微调

通过使用@TestPropertySource

内联您想要的属性,直接在Test类上覆盖您的属性

选项3 Spring Boot - 多个属性文件或单个YAML文件

将道具归入春季档案(Example here)并直接从maven调用:mvn test -Dspring.profiles.active="myOtherSpringProfile"

答案 2 :(得分:1)

在命令行中覆盖参数时,请使用逗号作为分隔符,而不是空格:

mvn test -Drun.arguments='--spring.datasource.url=...,--spring.datasource.username=...'.

这也应该有效:

mvn test -Dspring.datasource.url=... -Dspring.datasource.username=...

其他答案和评论提到使用配置文件并在application.properties中放置自定义/src/test/resources,由于您使用不同的管道,这对您来说不是一个可行的解决方案,但如果我没记错,您甚至可以使用application-{profile}.properties中的/src/test/resources。这样,您应该能够为每个管道维护一个测试配置文件,您可以在其中放置自定义参数,然后使用以下命令测试管道:

mvn test -Dspring.profiles.active=foobar

答案 3 :(得分:0)

创建另一个application-dev.properties文件并粘贴:

spring.datasource.url=jdbc:postgresql://my.test.server.com:5432/myDatabase
spring.datasource.username=anotherUsername

然后在-Dspring.profiles.active=dev命令中使用选项mvn运行。

  • 例如:mvn test -Dspring.profiles.active=dev

您可以根据需要添加任意数量的个人资料。

  • 语法:application-<profile name>.properties