我试图使用弹簧源工具套件使用配置文件(dev,prod ...)和maven 3轻松打包我的弹簧启动应用程序。
配置文件设置正常,我可以使用param:spring.profiles.active
在application.properties中切换配置文件我已经创建了application- {profiles} .properties并且boot使用application.properties中设置的spring.profiles.active param相应地读取属性文件
现在我使用目标部分创建maven运行配置:package spring-boot:repackage
我还添加了参数部分:spring.profiles.active,其中dev为value。
最后,我想在spring.profiles.active中使用不同值的3个运行配置,以便为不同的环境准备包。
当我使用调试模式运行配置时,我可以在测试部分看到我在maven中传递的当前param被正确使用(如果我设置dev,我在maven测试中看到我的dev DB被调用,所以读取application-dev.properties文件),但是当maven产生最后的战争之后,这个参数似乎不再被使用了。
当我部署软件包时,spring boot会读取spring.profiles.active(如果存在于application.properties中)。如果我在application.properties中删除它,只需使用application.properties中的params
我做错了吗?我认为在重新包装过程中会发生这种情况。我在maven中设置的参数丢失了。
我还有另外一个问题,我尝试在插件部分中使用maven为最终战争命名,但它似乎没有像我之前使用maven那样工作。
这是我的pom.xml的结尾:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<warName>stdapps</warName>
</configuration>
</plugin>
</plugins>
</build>
以下是我的maven配置图片:
感谢您的帮助
答案 0 :(得分:1)
关于spring boot maven插件配置,如plugin documentation中所述, warName 不是有效参数, finalName 是。
另外,根据我的经验,即使文档说分类器参数是可选的,当我尝试使用最终名称和输出目录配置重新打包目标时,从终端执行命令mvn spring-boot:repackage
时,结果是构建失败和错误消息,指示分类器不能为空。 (错误?)
所以这是适用于我的插件配置:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<outputDirectory>deployments</outputDirectory>
<finalName>warName</finalName>
<classifier>classifierName</classifier>
</configuration>
</execution>
</executions>
</plugin>
这会在我的项目的deployments文件夹中生成warName-classifierName.war文件。