maven-资源文件内容动态替换
资源文件中可以通过${maven属性}来引用maven属性中的值,打包过程中这些会被替换掉,替换的过程默认是不开起的,需要手动开启配置
-
修改配置文件内容
jdbc.url=${jdbc.url} jdbc.username=${jdbc.username} jdbc.password=${jdbc.password}
-
修改xml文件内容
<properties> <!-- 指定资源文件复制过程中采用的编码方式 --> <encoding>UTF-8</encoding> <jdbc.url>jdbc:mysql://localhost:3306/javacode2018?characterEncoding=UTF- 8</jdbc.url> <jdbc.username>root</jdbc.username> <jdbc.password>root</jdbc.password> </properties>
-
开启动态替换配置,需要在pom.xml添加配置
<build> <resources> <resource> <!-- 指定资源文件的目录 --> <directory>${project.basedir}/src/main/resources</directory> <!-- 是否开启过滤替换配置,默认是不开启的 --> <filtering>true</filtering> </resource> </resources> </build>
如果要控制测试资源的话可以使用testResources元素
自定义分隔符
自定义分隔符,需要配置maven-resources-plugin插件的参数:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<configuration>
<!-- 是否使用默认的分隔符,默认分隔符是${*}和@ ,这个地方设置为false,表示不启 用默认分隔符配置-->
<useDefaultDelimiters>false</useDefaultDelimiters>
<!-- 自定义分隔符 -->
<delimiters>
<delimiter>$*$</delimiter>
<delimiter>#</delimiter>
</delimiters>
</configuration>
</plugin>
</plugins>
delimiters中可以配置多个delimiter,可以配置#*#,其中的*标识属性名称,那么资源文件中的#属性名#
在复制的过程中会被替换掉,*前后都是#,表示前后分隔符都一样,那么可以简写为#,所有#*#和#写法是一样的
delimiters的默认值:
this.delimiters.add("${*}");
this.delimiters.add("@");
修改配置文件:
jdbc.url=${jdbc.url}
jdbc.username=$jdbc.username$
jdbc.password=#jdbc.password#
运行后:
jdbc.url=${jdbc.url}
jdbc.username=root
jdbc.password=root
第一个没有被替换因为是否使用默认分隔符为false
指定要替换的资源文件
修改pom.xml中resources元素
<resources>
<resource>
<!-- 指定资源文件的目录 -->
<directory>${project.basedir}/src/main/resources</directory>
<!-- 是否开启过滤替换配置,默认是不开启的 -->
<filtering>true</filtering>
<!-- 列出需要被处理的 -->
<includes>
<include>**/jdbc.properties</include>
</includes>
<!-- 排除需要被处理资源文件列表 -->
<excludes>
<exclude>**/const.properties</exclude>
</excludes>
</resource>
</resources>
**匹配人员深度的文件路径
*匹配人员个字符串