当前位置: 首页 > 知识库问答 >
问题:

Springboot Maven应用程序资源筛选。属性

许博
2023-03-14

我有一个SpringBoot项目(maven/java8)。

我想通过Maven配置文件(dev.properties|prod.properties)过滤src/main/Resources/application.properties中的一些自定义变量

Maven命令:

mvn clean package -Pdev

应用属性:

b.token = ${origin.token}

开发属性:

origin.token = OixxxxxeyJhbGciOiJIiY3ODkwopsdbuerfazdf

prod.properties:

origin.token = epbeoebbrtrryiterzerfeciIxxxxxxxibmFtZS

pom.xml:

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <env>dev</env>
        </properties>
    </profile>
    
    <profile>
        <id>prod</id>
        <properties>
            <env>prod</env>
        </properties>
    </profile>
</profiles>

<build>
    <filters>
        <filter>src/main/conf/filters/${env}.properties</filter>
    </filters>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

共有1个答案

白腾
2023-03-14

这个解决方案对我有效,您可以从Maven-P参数中选择您的配置文件:

Maven命令:

mvn clean package -Pdev

应用属性:

    #Active Profile
spring.profiles.active = @mainprofile@

开发属性:

origin.token = OixxxxxeyJhbGciOiJIiY3ODkwopsdbuerfazdf

prod.properties:

origin.token = epbeoebbrtrryiterzerfeciIxxxxxxxibmFtZS

pom。xml

<profiles>
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-war-plugin</artifactId>
                        <configuration>
                        </configuration>
                    </plugin>
                </plugins>
                <resources>
                    <resource>
                        <directory>src/main/resources</directory>
                        <filtering>true</filtering>
                    </resource>
                </resources>
            </build>
            <properties>
                <mainprofile>dev</mainprofile>
            </properties>
        </profile>

<!-- Do the same for prod profile here -->   
</profiles>
 类似资料:
  • 我正在运行一个简单的maven项目(Maven3.3.9),其中包含配置文件和资源筛选。似乎总是在默认配置文件上进行筛选。 src/main/filters(默认)中有两个配置文件:config-dev.properties和config-prod.properties(仅包含一个变量application.env=development application.env=production 和s

  • 是否可以以某种方式配置Spring引导maven插件以包括来自依赖项的资源。 例如,如果在我的spring boot项目中,我有: 在这个JAR文件中有一个属性文件,如 结果1。 但是,当我构建SpringBootJAR时,这个属性文件并没有添加到。包含它的JAR包含在 然而,在我的情况下。我想将的内容提取到Spring BootJAR的引导目录中,这样就可以进行自动配置。 在现实世界中,我试图通

  • 在新的Laravel资源类中,您可以根据自己喜欢的任何内容删除属性。 如果您想返回许多项目,您可以使用该功能 但这不允许您在一个位置添加元数据。输入一个集合,太好了,这是一个很好的格式,能够添加元数据的许多项目。但是,您不能做的是筛选集合,您必须像使用资源一样隐藏属性。我能看到的唯一办法就是 我是不是错过了什么?对于资源收集来说,这似乎是一个被忽视的巨大能力

  • 我有以下pom.xml: 注意,上的元素被注释掉了 在中还有以下内容 因此,我希望Maven做的只是用替换,除非开发配置文件被激活,否则我希望Maven用替换 当我运行时,它将值设置为。很好,资源筛选工作正常。 但是,当我运行时,它将值设置为 如果取消对配置文件上的元素的注释并运行,则会将设置为 我甚至运行了让它输出活动的配置文件名称,并且在上面的两种情况下,它都表示开发配置文件是活动的,但是如果

  • 我有这个pom结构,我正在尝试访问属性。我无法通过另一个属性中心的资源筛选访问此内容。端口,在属性部分中定义 在中,我有属性文件,它有这个 我就像这样进入财产 但它会打印 <代码>轮毂${集线器端口} 我提到了这个问题,但我无法访问该物业。

  • 这有点让人抓狂,在与Maven合作的几年里,我从未见过这种情况发生。一个简单的项目(不是我自己写的)会随机失败过滤资源,我不知道是什么导致了它。我不能共享项目源代码,但我会尽可能多地共享POM。请记住,问题不在于代码,而在于Maven随机决定不过滤资源。 我最初在POM的build标签中配置了这个: 在我的src/main/资源目录中,我有一个名为spring-config.xml.的文件。这个文