Maven compiler 插件

此插件用于对当前项目的源码进行编译。从3.0开台,默认编译器是javax.tools.JavaCompiler(如果你的java为1.6及以上版本)。如果想要强制使用javac,则必须配置插件选项forceJavacCompilerUse。另外要注意的是,目前默认的 source 为1.5,并且默认的target也为1.5,这与Maven时所依赖的jdk无关。如果要更改这些默认值,则需要去设置java编译器的 -source 和 -target 选项。

compile

用于对项目中的源码文件进行编译。这个goal 默认被绑定到了 compile phase 可以在Maven对项目构建的生命周期中自动执行。

testCompile

用于对项目中的测试代码文件进行编译。这个goal默认已经被绑定到 testCompile phase,可以在Maven对项目构建的生命周期中自动执行。

设置java编译器的 -source 和 -target 参数

有时候可能需要将某个项目编译为与当前使用版本不同的版本。javac 命令可以接受 -source 和 -target 参数用于对源代码和生成的目标字节源所运行的java环境进行说明,此插件也有类似的配置。

例如,如果使用的是java8语法编写的源码(-source 1.8),并且希望编译的类与 JVM1.8(-target 1.8)兼容,则可以添加发下两个属性,它们是插件默认参数的名称。


  [...]
  
    1.8
    1.8
  
  [...]

或者像下面这样直接对此插件进行配置


  [...]
  
    [...]
    
      
        org.apache.maven.plugins
        maven-compiler-plugin
        3.7.0
        
          1.8
          1.8
        
      
    
    [...]
  
  [...]

注意:仅仅设置 target 选项,并不能保证你的代码在指定版本的jre上运行。设置source 选项也不能保证你的代码在指定的jdk上编译。要用特定的与用于启动Maven的版本不同的JKD版本编译代码,可以参阅下面小节的内容。

使用其他JDK编译

要使用不同的JDK对项目进行构建,最佳方式是使用工具链机制(toolchains插件)。在构建项目的过程中,每个步骤都需要JDK中的一个工具来执行,如编译源码,生成javadoc,运行单元测试或生成jar。工具链就是用于指定JDK路径,以集中配置的方式把指定的JDK应用于所有插件。详细内容可以参阅Maven 中 toolchains插件的帮助文档。

除了使用toolchains插件外,还可以使用compilerVersion参数指定compiler插件所使用的编译器版本。只是必须把fork参数设置为true,它才能正常工作。


  [...]
  
    [...]
    
      
        org.apache.maven.plugins
        maven-compiler-plugin
        3.7.0
        
          true
          true
          
          1.3
        
      
    
    [...]
  
  [...]

为了避免硬编译文件系统路径,可以使用属性。

  $ {JAVA_1_4_HOME} / bin / javac 

然后每个开发人员在settings.xml中定义该属性,或设置一个环境变量,以便pom.xml保持可移植性。

 
   [...]
   
     [...]
     
       compiler
         
           C:\Program Files\Java\j2sdk1.4.2_09
         
     
   
   [...]
   
     compiler
   
 

你可能感兴趣的:(Maven compiler 插件)