Maven配置文件和Spring应用程序yml文件

8

我有一个Spring项目,使用以下命令构建:

mvn clean install -Pdevelopment

通过选择基于Maven配置文件的适当属性文件,它可以完美地工作。

我们当前的应用程序现已更新,具备了application.yml文件和properties文件。

yml文件提供了根据Spring配置文件创建属性的能力。

#DEV
spring:
    profiles: profile1
environment:
    property1: AAA
    property2: BBB
---
#PROD
spring:
    profiles: profile2
environment:
    property1: CCC
    property2: DDD
---

使用-Dspring.profiles.active=profile1可以很好地支持Spring配置文件。

是否有一种方法可以读取Maven配置文件(而不是Spring配置文件),并相应地设置属性?

1个回答

5

由于您不再想使用Spring配置文件,因此您只需要在application.yml中保留每个配置的一个键。根据您的示例,它可能如下所示:

environment:
  property1: @property1@
  property2: @property2@

然后在您的pom.xmlsettings.xml中创建配置文件。
<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <property1>AAA</property1>
            <property2>BBB</property2>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <property1>CCC</property1>
            <property2>DDD</property2>
        </properties>
    </profile>
</profiles>

在我的应用程序类中使用如下:

@Value("${environment.property1}")
private String profileProperty;

@Value("${environment.property2}")
private String settingsProperty;

我们能否将它与类似以下的内容一起使用? <profiles> ... <profile> <id>dev</id> <properties> <env>dev</env> </properties> ... </profile> </profiles> - Dexter
3
尝试执行该操作时,我遇到了一个异常。 线程“main”中的异常在扫描下一个标记时被触发。在“reader”,第2行,第13列找到了字符“@ '@'”,这个字符不能开始任何标记(不要使用@进行缩进)。在org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:420)处,抛出异常。 在org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:226)处,检查标记。 在org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingValue.produce(ParserImpl.java:586)处,产生异常。 - Dexter
1
当Maven属性未正确配置时,我也遇到过这些问题。请记得在运行命令中激活您的Maven配置文件。您使用的Spring版本是什么?它可能不支持yml中的@maven.token@语法。 - Martin Hansen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接