Google Maven Replacer Plugin插件详解

在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插件的配置参数

  • baseDir,
  • outputDir,相对于baseDir的路径
  • outpuBasedir,相对于执行目录的路径
  • preserveDir,默认true
  • quiet,默认false
  • ignoreError,默认false
  • maxReplacements,允许替换的文件的最大数量

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

说明:,在没有配置basedir的情况下,必须给出完整路径。


 ${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/
 

你可能感兴趣的:(Maven)