在Maven项目的构建过程中,对于Maven标准预定义变量,或者
但是,如果要在构建的过程中替换文件中的任何指定字符串(这里成为tokens),就需要使用Google为Maven提供的replacer插件。
Google的replacer插件原名为maven-replacer-plugin,2012年以后,为了遵循Maven的命名规则,被重命名为replacer,最新版本为April 16th, 2014发布的Version 1.5.3。
1.基本用法
com.google.code.maven-replacer-plugin
replacer
1.5.3
prepare-package
replace
false
${project.build.directory}/myApp/index.jsp
%PROJECT_VERSION%
${project.version}
说明:replacer插件只提供了一个goal,就是replace。
这里将replacer插件的执行加入到了prepare-package阶段。实际上,replacer插件默认被加入到compile阶段。当然可以配置加入到compile, test, prepare-package阶段。
这里,将index.jsp文件中的占位符%PROJECT_VERSION%,全部替换为${project.version}的实际值。
2. replacer插件的配置参数
3.配置示例
1) 替换一个文件中的一个token
true
target/myapp/jsp/helloWorld.jsp
target/myapp/jsp/helloWorld-updated.jsp
false
$BUILD_NUMBER$
${buildNumber}
2) 使用正则表达式匹配一个文件中要替换的一个token
target/someapp/jsp/helloWorld.jsp
ToKeN
value
CASE_INSENSITIVE
MULTILINE
3) 替换多个文件中的一个token
${project.build.directory}/myapp/target/**/replace-me.*
${project.build.directory}/myapp/target/**/do-not-replace-me.*
TOKEN
VALUE
说明:
${project.build.directory}/myapp/target
**/replace-me.*
**/do-not-replace-me.*
TOKEN
VALUE
4) 替换多个tokens
target/classes/database.properties
token1
value1
token2
value2
5) 使用tokenValueMap给出一组要替换的tokens
target/classes/database.properties
etc/${environment}/database.conf
4. WAR文件中的资源文件
WAR文件中的资源文件位于src/main/webapp路径下。在WAR文件的打包过程中,操作位于src/main/webapp路径下的Web resources有其特殊性。WAR文件的打包是通过maven-war-plugin实现的。但是maven-war-plugin不会将Web resources暴露给其他Maven插件的。必须明确调用maven-war-plugin的exploded,将Web resources提前复制出来,replacer插件替换后,maven-war-plugin再使用替换后的Web resources(位于target/路径下)打包WAR文件。配置如下:
...
org.apache.maven.plugins
maven-war-plugin
2.0.1
prepare-war
prepare-package
exploded
com.google.code.maven-replacer-plugin
replacer
1.5.3
prepare-package
replace
target/${project.build.finalName}/WEB-INF/resources/**
TOKEN
VALUE
参考链接:
https://code.google.com/archive/p/maven-replacer-plugin/