maven资源插件的过滤配置

maven的资源插件提供过滤功能,可以在文件中使用占位符,配置对特定目录中的文件进行过滤。默认的占位符是@和${*}(这点可以查看官方的resources goal的配置参数得知)。

通常配置如下:

<build>
    <resources>
			<resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
			<resource>
				<directory>src/main/java</directory>
				<includes>
					<include>**/*.xml</include>
					<include>**/*.json</include>
					<include>**/*.ftl</include>
				</includes>
			</resource>
		</resources>
</build>

第一段配置会启用对src/main/resource目录下的文件的过滤功能,该功能默认关闭

第二段配置指定src/main/java下的任意目录的xml文件、json文件、ftl文件都是资源文件,会被复制的对应目录。

通常SpringBoot所使用的配置文件,如application.properties或applicaion.yml,在配置文件上面使用占位符后,编译输出的文件会替换上具体的值。

需要注意的是,spring-boot-starter-parent的pom文件中有相应的配置:

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <configuration>
        <delimiters>
            <delimiter>${resource.delimiter}</delimiter>
        </delimiters>
        <useDefaultDelimiters>false</useDefaultDelimiters>
    </configuration>
</plugin>

它更改了默认的占位符,这时如果不配置资源插件的话,只能用resource.delimiter作为占位符,即@符号。

也可以配置自定义的占位符:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-resources-plugin</artifactId>
	<version>2.7</version>
	<configuration>
	    <delimiters>
			<delimiter>@</delimiter>
			<delimiter>#{*}</delimiter>
		</delimiters>
	</configuration>
</plugin>

使用上述配置之后,支持@和#{*},这2个占位符。

SpringBoot支持在yml文件中,使用${变量名:默认值}的形式。使用自定义配置时,最好不要与SpringBoot自带的${}冲突。SpringBoot自带的占位符,是在启动时读入系统属性(java -D所传入的参数)或环境变量(操作系统层面)来替换,而maven的资源过滤插件是编译时就完成替换。

还可以预先制定好properties文件,使用该文件中的键值对来进行过滤替换。

<filters>
    <filter>src/main/filters/app.properties</filter>
</filters>

将app.properties中配置的键值对从中取出值,用来过滤具体的文件。

maven资源插件的过滤用法:

Apache Maven Resources Plugin – Introduction

Apache Maven Resources Plugin – Filtering

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值