SPRING BOOT可部署的war文件,包含STS中的maven和profile

时间:2015-02-06 09:29:23

标签: spring-boot

我试图使用弹簧源工具套件使用配置文件(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配置图片:

Maven run configuration

感谢您的帮助

1 个答案:

答案 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文件。