欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

profile filters properties 无法替换问题总结

程序员文章站 2022-06-29 14:31:50
...

基于maven pom配置中的profiles配置针对不同环境,使用不同配置文件。

 

第一步:创建filters资源文件(src/main/filters/dev.properties、test.properties、beta.properties),其中路径地址/名称任意设置。

dev.properties

 

mysql.url=jdbc:mysql://xx.xx.xx.xx:3306/xx

 

 

第二步:创建配置文件(src/main/resources/settings.properties),对第一步配置资源进行使用。

settings.properties

 

mysql.url=${mysql.url}

 可使用如下命令将配置文件导入到spring容器中

<context:property-placeholder location="classpath:settings.properties"/>

 

也可在spring配置文件中直接使用(src/main/resources/spring.xml)

spring.xml

 

<bean  class="xx.xx.xx.xx.xx.xx">
    <property name="url" value="${mysql.url}" />
</bean>

 

第三步:在pom中配置profile

    pom.xml 

<profiles>
	<profile>
		<id>dev</id>
		 <build>
			<filters>
				<filter>src/main/filters/dev.properties</filter>
			</filters>
		 </build>
                 <!-- 定义其为默认加载 -->
		 <activation>
			<activeByDefault>true</activeByDefault>
		 </activation>
	</profile>
	<profile>
		<id>test</id>
		 <build>
			<filters>
				<filter>src/main/filters/test.properties</filter>
			</filters>
		 </build>
	</profile>
	<profile>
		<id>beta</id>
		 <build>
			<filters>
				<filter>src/main/filters/beta.properties</filter>
			</filters>
		 </build>
	</profile>

 将其添加到pom的<project>标签内部。

 

第四步(关键一步):maven打包时激活filters过滤。

pom.xml

<build>
         <!-- 定义项目打包后的名称 -->
	<finalName>pojo-name</finalName>
	<resources>
		<resource>
                         <!-- 对该目录下的配置build时启用filter 过滤替换-->
			<directory>src/main/resources</directory>
			<filtering>true</filtering>
		</resource>
	</resources>
</build>

 

 

第五步:执行打包命令

mvn package -P dev

其中 -P 指定编译的profile

 

问题分享:

在使用过程中,配置与以上配置完全相同,但始终无法对${mysql.url}等参数进行替换,最终导致的问题是,我在eclipse-->properties-->java build path-->source 配置中将src/main/resources默认编译到了src/main/webapp/WEB-INF/classes 目录下(未替换文件-错误文件),导致在执行mvn 命令时,由于未进行mvn清理,mvn是直接将src/main/webapp/WEB-INF/classes拷贝到了target/obj-name/WEB-INF/下面,而不是经过build filter重新生成的配置文件!解决方案:删除src/main/webapp/WEB-INF/classes下配置文件,让其在mvn package -P dev 时重新生成!