zoukankan      html  css  js  c++  java
  • Spring boot项目maven的profile多环境配置不自动替换变量的问题解决

    Spring boot项目maven的profile多环境配置不自动替换变量的问题解决

    在网上找了好久,配置都很简单,可是我的程序就是不能自动替换变量,最终单独测试,发现原来是引用spring boot parent的问题

    引用一位博主的话"spring-boot为了保护application.yml和application.properties,修改了默认的占位符${...}为@...@,然后发现resources插件有一个配置项"

    <useDefaultDelimiters>true</useDefaultDelimiters>

    解决办法:

     在build里面加plugin

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

    下面分享完整的配置,一共有两块,一块是profiles配置,一块是build

    其中prifiles里面定义的 properties属性会替换.properties文件里面的变量 

    例如 application.properties里面有一个mapdb.path=${mapdb.path}

    会被替换成正确的

    	<build>
    		<resources>
    			<resource>
    				<directory>src/main/resources</directory>
    				<excludes>
    					<exclude>dev/*</exclude>
    					<exclude>prod/*</exclude>
    				</excludes>
    			</resource>
    			<resource>
    				<directory>src/main/resources/${profiles.active}</directory>
    				<filtering>true</filtering>
    				<includes>
    					<include>**/*.properties</include>
    					<include>**/*.xml</include>
    				</includes>
    			</resource>
    			<resource>
    				<directory>src/main/resources/</directory>
    				<filtering>false</filtering>
    				<includes>
    					<include>**/*.xml</include>
    				</includes>
    			</resource>
    		</resources>
    		<pluginManagement>
    			<plugins>
    				<plugin>
    					<artifactId>maven-resources-plugin</artifactId>
    					<configuration>
    						<encoding>utf-8</encoding>
    						<useDefaultDelimiters>true</useDefaultDelimiters>
    					</configuration>
    				</plugin>
    			</plugins>
    		</pluginManagement>
    	</build>

     下面是profiles定义

    	<profiles>
    		<profile>
    			<id>dev</id>
    			<properties>
    				<mapdb.path>${basedir}/mapdb</mapdb.path>
    				<profiles.active>dev</profiles.active>
    			</properties>
    			<activation>
    				<activeByDefault>true</activeByDefault>
    			</activation>
    		</profile>
    
    		<profile>
    			<id>production</id>
    			<properties>
    				<profiles.active>prod</profiles.active>
    			</properties>
    		</profile>
    	</profiles>
  • 相关阅读:
    通向KDE4之路(七):文档反省器Okular和Ligature
    KDE言语绑定──KDEBindings
    KDEEdu(教诲性质软件)引见
    KDEMultimedia(KDE多媒体东西)引见
    KDESDK(KDE斥地工具)引见
    通向KDE4之路(十五):Konsole年夜整修
    企业信息化规划http://www.blogcn.com/User/fieldnet/index.html
    写在博客一周年
    Delphi 的内存操作函数(3): 给结构体指针分配内存
    在 Delphi 2009 中, for in 循环都能用在什么地方?
  • 原文地址:https://www.cnblogs.com/mahaijun/p/9046128.html
Copyright © 2011-2022 走看看