java - Spring Boot - 外部化属性

标签 java spring maven spring-boot

我有一个构建可执行 war 的 Spring Boot 项目,并在 中配置了一个 application.properties 文件和一个 application-dev.properties源代码/主要/资源

application.properties中的第一行是spring.profiles.active=dev,它触发包含application-dev.properties 按预期运行时。

我的问题是,我似乎无法使用外部属性源覆盖这些属性(在一切都变得困惑/紧张之后)。为了进行简单的调试,我在项目的根目录中创建了一个文件 settings.properties,并在其中指定了 spring.profiles.active=dev,deploy 希望也触发“部署”配置文件。

但是,当我运行以下命令时:

java -jar target/project-0.1.0-LOCAL-NA.war --spring.config.location=file:./settings.properties

部署配置文件从未启用。我以为我可以使用以前的版本(现在运行 1.1.6.RELEASE,来自 1.0.2.RELEASE),但回滚也无济于事。

我是否遗漏了一些明显的东西?

更新 1:

所以在调试时我发现 Environment.getActiveProfiles() 只会返回 1 个项目,即使有多个 Activity 配置文件(在本例中为开发和部署)。所以,虽然我的报告只列出了开发,但也有部署。

我已经通过使用环境变量而不是配置文件的属性文件再次运行,但我想只使用文件来设置所有内容......

最佳答案

当使用 jar 文件启动时,我们发现您不能使用“-D”来注入(inject)系统变量。您必须使用“--”。

假设您将您的应用编码为使用配置文件,这对我们有用

    java -jar myapplication.jar
    --spring.profiles.active=override
    --spring.config.location=file:/path/to/file/application-override.properties

关于java - Spring Boot - 外部化属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25963919/

相关文章:

java - 测试 HTTP 延迟的短代码?

java - spring-boot 和 spring-mvc 兼容性

java - 是否可以编写AOP注解?

java - 在多模块 react 器项目的子模块中从命令行运行特定的 Maven 插件目标

maven - 存储库和插件存储库之间的区别

Java 运算符检查任一条件是否为假,但不会同时检查两个条件是否为假

java - 计算两个日期之间的差异后得到错误的时间

java - 从资源中使用 config.yaml 启动 Dropwizard

java - 如何使用 java 在 mysql 中更新文件路径?

java - 使用maven安装本地jar