我在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
这将(希望(被拾起&由";下一次测试";。