springboot 多环境打包 @@ 占位符不生效

pom 文件

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <profileActive>dev</profileActive>
            <cache>cachecloud_test</cache>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>prd</id>
        <properties>
            <profileActive>prod</profileActive>
            <cache>cachecloud_production</cache>
        </properties>
    </profile>
</profiles>

properties文件

cachecloud_env=@cache@

打完包发现 @cache@ 没有被替换为cachecloud_test
换成${cache} 也不行

pom文件里加了这个也不好使

<pluginManagement>

      <plugins>
          <plugin>
              <artifactId>maven-resources-plugin</artifactId>
              <configuration>
                  <encoding>utf-8</encoding>
                 <useDefaultDelimiters>true</useDefaultDelimiters>
              </configuration>
          </plugin>
      </plugins>
  </pluginManagement>


阅读 6.4k
2 个回答

maven 的 profile只对pom.xml里的变量替换起作用, 你想要改properties文件,需要建不同版本的文件,放在不同的子目录下,如src/main/resources/test/a.properties,和src/main/resources/prod/a.properties
通过profile开关,决定引入哪个目录下的文件。
如:

pom.xml的resources先排除这部分重复的文件,
再通过${profiles.active}激活当前profile下的目录。

参考下面的配置:

        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <!-- 资源根目录排除各环境的配置,防止在生成目录中多余其它目录 -->
                <excludes>
                    <exclude>test/*</exclude>
                    <exclude>pro/*</exclude>
                    <exclude>dev/*</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources/${profiles.active}</directory>
            </resource>
        </resources>

为啥不配置多个yml。运行时指定配置文件,java -jar xxx.jar --spring.profiles.active=prod

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题