使用formatter-maven-plugin格式化源代码

概述

  代码相信同学们都不陌生,但对于代码风格,或许大家并不是很了解,今天就来聊聊开发中比较重要的一个环节,就是代码风格,什么是代码风格呢?

代码风格(英语:Programming style)即程序开发人员所编写源代码的书写风格。良好代码风格的特点是使代码易读。

  代码风格真的是太重要了,尤其是在团队协作开发中,一套好的代码风格和规范大家都能适应并看懂、如果没有统一的代码风格,阅读协作起来是相当困难的。你这个风格、我那个风格、那岂要不是乱套了。
  刚开始从事开发行业的时候,上级让我改一个小功能,我改好了,然后提交到了SVN,正好有个同事也改了个东西,与资源库同步的时候显示他冲突了,随即被同事生气的教训了一顿,那会我真是一头雾水,我就改了一个地方,怎么冲突了,原来自己写代码有个习惯那就是格式化一下代码,正式因为和项目整体代码风格不一致,所以造成了冲突,当时同事处理的很痛苦,毕竟几百行呢,试想下1万多行代码遇到这种情况怎样?不瞒大家说,我目前负责维护的一个项目,已经1万6千多行了,不过目前我已经在重构重写了,风格、规范都上纲上线,不用因为风格和规范而烦恼,轻松舒服。
  代码规范就不说了,目前我们用的是阿里巴巴代码规范,相信很多同学都知道并用过,不了解有兴趣的同学请点击查看。
  良好的风格可节约大量处理问题时间、避免很多问题,其中最重要的一点就是审查,风格一致可排除代码中大量的换行、空格、直接定位新增修改过的地方。
  对于代码格式化风格,可以在开发工具进行配置,为啥还要用插件呢?首先团队人员工具不一样,有使用IDEA、有使用eclipse的,萝卜青菜各有所爱,每个人都需要配置一遍,但如果有个插件,通过maven命令便可以无视开发工具格式化统一的风格呢?今天它来了。

官网

https://code.revelc.net/formatter-maven-plugin/

使用

环境要求

  • Maven 3.3.9+
  • JDK1.8+

pom配置


    ...
    
      
        net.revelc.code.formatter
        formatter-maven-plugin
        2.11.0
      
    
    ...

运行命令:mvn formatter:format执行格式化。

注:使用此配置,将使用默认编译器版本(1.8)和当前系统的行结尾来格式化项目src/main/javasrc/test/java中的代码源文件。

上面通过命令的方式格式化了源文件,那如何在构建期间格式化源文件呢,很简单将formatgoal包含在插件执行就好了,那将在构建compile目标期间运行插件。


    ...
    
      
        net.revelc.code.formatter
        formatter-maven-plugin
        2.11.0
        
          
            
              format
            
          
        
      
    
    ...

为了在构建过程中验证源代码,请在插件执行中包括validate goal 。


    ...
    
      
        net.revelc.code.formatter
        formatter-maven-plugin
        2.11.0
        
          
            
              validate
            
          
        
      
    
    ...

可用目标

  • formatter:format: 用于使用Eclipse代码格式化程序格式化Java源代码。与原始hash到格式化后的hash以及缓存的hash相比,使用内容的sha512 hash避免了源文件的重新格式化。
  • formatter:help :在formatter-maven-plugin上显示帮助信息。
  • formatter:validate :专注于CI服务器。如果代码未按预期格式格式化,则将使构建失败

进阶

指定目录

  默认情况下,该插件会格式化src/main/javasrc/test/java目录中所有Java源文件的格式。要想在其他位置格式化源文件,可以使用directories参数。下面的示例将格式化java主要源目录和生成的源目录中的文件:


 net.revelc.code.formatter
 formatter-maven-plugin
 2.11.0
 
   
     ${project.build.sourceDirectory}
     ${project.build.directory}/generated-sources
   
 
 

指定包含和忽略

  还可以使用includesexcludes参数对指定要格式化的Java源文件进行更多控制。这些参数是相对于所有源目录src/main/javasrc/test/java。下面的示例仅格式化include包中的文件,Test.java和exclude包中的文件除外:


  net.revelc.code.formatter
  formatter-maven-plugin
  2.11.0
  
    
      cn/smallbun/manage/formatter/
    
    
      cn/smallbun/manage/special/
      **/*Test.java
    
  

格式化编码

  使用encoding参数,指定格式化期间要使用的编码,下面示例指定在格式化期间使用UTF-8编码:


  net.revelc.code.formatter
  formatter-maven-plugin
  2.11.0
  
    UTF-8
  

  默认情况下,如果在pom中指定project.build.sourceEncoding,则插件使用该属性。否则,将使用当前系统的文件编码。


  UTF-8


  net.revelc.code.formatter
  formatter-maven-plugin
  2.11.0

自定义配置文件

  在开发中公司都有统一的代码配置文件,我们只需要在插件配置即可,插件只支持使用eclipse格式化配置。大家可以将使用configFile参数为代码格式化程序指定格式化选项。


  net.revelc.code.formatter
  formatter-maven-plugin
  2.11.0
  
    ${project.basedir}/Formatter.xml
  

  默认情况下,该插件使用configFile中的编译器版本而不是编译器参数。要指定使用编译器参数而不是configFile中的参数,可将overrideConfigCompilerVersion参数设置为true。该参数对于避免更新configFile来使编译器版本与pom保持同步非常有用。


  net.revelc.code.formatter
  formatter-maven-plugin
  2.11.0
  
    ${project.basedir}/Formatter.xml
    true
    1.9
    1.9
    1.9
  

  上面示例使用指定的编译器版本进行格式化,除Formatter.xml配置文件中定义的编译器版本以外的所有设置。

格式化模板

  这里提供自己使用的一套格式化模板























































































































































































































































































问题

@formatter:off 无效

打开样式文件,将use_on_off_tags设置为true

总结

  以上就是使用插件的内容了,可能有不详细的,时间久了插件也会有所更新,大家可以去官网查看文档,程序员学会看文档真的很重要,使用插件有好处也有弊端,大家也可以直接使用工具配置方式,或者使用此插件,看情况吧,看场景了。即使不用了解一下也是好的嘛。

你可能感兴趣的:(使用formatter-maven-plugin格式化源代码)