Maven install,占位符${}没有被替换

问题:

maven多module开发过程中,父module继承了

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
<relativePath/>
</parent>

现在想实现配置文件的多环境运行,比如有application-sit.yml,application-uat.yml,想在application.yml文件中通过变量env控制不同的环境使用不同的配置文件,
但是打包的时候发现怎么都替换不了,打包的命令:mvn clean package -DskipTests=true -Denv=uat 或者mvn clean package -DskipTests=true -Denv=sit,
最后打完包application.yml还是如下

spring:
  profiles:
    active: ${env}

解决办法:
添加useDefaultDelimiters标签,并且设置为true

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

原因:
spring-boot为了保护application.yml和application.properties,修改了默认的占位符${...}为@...@,受影响的应该是spring boot 1.3.0以上的版本,
加上那句表示使用默认的占位符

Maven自定义占位符:

<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>2.5</version>
          <configuration>
              <useDefaultDelimiters>false</useDefaultDelimiters>
              <delimiters>
                  <delimiter>$[*]</delimiter>
              </delimiters>
              <encoding>UTF-8</encoding>
          </configuration>
</plugin>

转载:maven占位符$变量无法替换

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.贴画撕掉之后留下的透明的印子,吹风机也不管用的那种,涂点风油精在上面,用手抹一抹,一下子就掉了,立竿见影。 (...
    落落815阅读 356评论 0 0
  • 前段时间看到有几个人都在推荐《你当像鸟飞往你的山》这本书,我就很想读一读,看看它到底有什么吸引人的地方。今天看完之...
    阅_己阅读 814评论 9 5
  • 世界很大,路途遥远,行程漫长,这一切告诉我们:生活很奇妙,在此之间我们会遇到很多事情,这一切的一切都需要进行管理。...
    明轩在雨中阅读 278评论 1 0
  • 周五晚上我们学校提前庆祝这第34个教师节,当时忙碌中的我对这个教师节的感受还是不大深的,只是过完了,在回忆...
    李世华_f57d阅读 175评论 0 1
  • 今天是世界微笑日!当人在瞬间的时候,微笑是很容易的,可是当人站在废墟上,依然能够豪迈的笑,那就是一个人有豁达的心态...
    一手王阅读 194评论 0 0