使用maven提供的spring配置文件运行SpringBootTest



我在maven pom中得到了以下配置文件:

<profiles>
<profile>
<id>local</id>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<profiles>
<profile>local</profile>
</profiles>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>

这对于启动应用程序来说很好,但如果我想按照以下方式构建应用程序mvn clean install -Plocal我的@SpringBootTest由于以下原因而失败:

No active profile set, falling back to default profiles: default

也尝试过:

<profile>
<id>local</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<configuration>
<argLine>-Dspring.profiles.active=local</argLine>
</configuration>
</plugin>
</plugins>
</build>
</profile>

我错过了什么?

psmvn spring-boot:run -Plocal在那里工作没有问题。。。也没有兴趣mvn clean install -Dspring.profiles.active=local我知道这很有效,但只是不感兴趣,因为配置文件包含的不仅仅是我们的配置文件!

(您的(Spring引导maven插件(配置(不受"安装";target(它只涉及spring-boot:repackage,它不知道"activeprofiles"/this-config(,这就是为什么您的配置文件(尽管已传播(在测试中没有激活的原因。

如果你想让它为mvn install工作,你必须通过:

-Dspring.profiles.active=local

至:

  • surefire插件

    在pom(>配置文件>构建>插件(中:

    <plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
    <argLine>-Dspring.profiles.active=local</argLine>
    </configuration>
    </plugin>
    

    或通过cmd。另请参阅。插件文档。

  • 故障保护插件。。。类似!(插件文档。

  • 也许更多。。。(任何其他插件,启动春季启动。(


  • 但当然,请不要"忘记";关于@ActiveProfiles,它将激活(更准确地说是添加!(配置文件到您的测试(classe(s。(但独立构建;(

  • 当然,你也可以";包装";spring.profiles.active在你的应用程序中的某个地方(属性/任何位置(;maven构建";。

    例如:

    • pom.xml:

      <profile>
      <id>local</id>
      <properties>
      <myProfiles>local,foo,bar</myProfiles>
      </properties>
      </profile>
      <!-- ... and (outside/in default profile!) -->
      <build>
      <testResources>
      <testResource>
      <directory>src/test/resources</directory>
      <filtering>true</filtering>
      </testResource>
      </testResources>
      <!-- ... -->
      </build>
      
    • src/test/resources/application.properties:

      spring.profiles.active=${myProfiles}
      
    • 将写入目标/测试类/application.properties:

      spring.profiles.active=local,foo,bar
      

      这将(希望(被拾起&由";下一次测试";。

相关内容

最新更新