编译器:编译

全名

org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile

说明

编译应用程序源

属性

  • 需要执行一个 Maven 项目。
  • 需要范围内工件的依赖解析:compile
  • 自版本:2.0
  • 默认绑定到生命周期阶段编译

可选参数

姓名 类型 自从 描述
<annotationProcessorPaths> 列表 3.5

作为注释处理器路径提供的类路径元素。如果指定,编译器将仅在那些类路径元素中检测注释处理器。如果省略,则使用默认类路径来检测注释处理器。检测本身取决于annotationProcessors的配置。

每个类路径元素都使用它们的 Maven 坐标(groupId、artifactId、版本、分类器、类型)来指定。传递依赖是自动添加的。例子:

<configuration>
  <annotationProcessorPaths>
    <path>
      <groupId>org.sample</groupId>
      <artifactId>sample-annotation-processor</artifactId>
      <version>1.2.3</version>
    </path>
    <!-- ... more ... -->
  </annotationProcessorPaths>
</configuration>

<annotationProcessors> 细绳[] 2.2

要运行的注释处理器的名称。仅适用于 JDK 1.6+ 如果未设置,则应用默认注释处理器发现过程。


<compilerArgs> 列表 3.1

如果fork设置为true ,则设置要传递给编译器的参数 。例子:

<compilerArgs>
  <arg>-Xmaxerrs</arg>
  <arg>1000</arg>
  <arg>-Xlint</arg>
  <arg>-J-Duser.language=en_us</arg>
</compilerArgs>

<compilerArgument> 细绳 2.0

如果fork设置为true ,则设置要传递给编译器的未格式化的单个参数字符串。要传递多个参数,例如-Xmaxerrs 1000(实际上是两个参数),您必须使用 compilerArguments

这是因为传递给 Java 编译器的有效参数列表因编译器版本而异。


<compilerArguments> 地图 2.0.1 已弃用。改用compilerArgs
<compilerId> 细绳 2.0 要使用的编译器的编译器 ID。有关更多信息,请参阅本指南
默认值为javac
用户属性是maven.compiler.compilerId
<编译器重用策略> 细绳 2.5 重用创建的 javacc 类的策略:
  • 重用创建(默认):将重用已创建但在多线程构建的情况下,每个线程将有自己的实例
  • reuseSame:即使是多线程构建,每次编译都将使用相同的 Javacc 类
  • alwaysNew:每次编译都会创建一个新的 Javacc 类
请注意,此参数值取决于您使用的 os/jdk,但默认值应该适用于大多数 env。
默认值为${reuseCreated}
用户属性是maven.compiler.compilerReuseStrategy
<编译器版本> 细绳 2.0 要使用的编译器版本,例如。“1.3”、“1.5”,如果 fork设置为true
用户属性是maven.compiler.compilerVersion
<调试> 布尔值 2.0 设置为true以在编译的类文件中包含调试信息。
默认值为true
用户属性是maven.compiler.debug
<调试级别> 细绳 2.1 要附加到-g命令行开关的关键字列表。合法值为 none 或以下关键字的逗号分隔列表:linesvarssource。如果未指定调试级别,默认情况下,不会将任何内容附加到-g。如果未打开调试,则该属性将被忽略。
用户属性是maven.compiler.debuglevel
<编码> 细绳 2.1 Java 编译器的 -encoding 参数。
默认值为${project.build.sourceEncoding}
用户属性是编码
<不包括> 2.0 编译器的排除过滤器列表。
<可执行文件> 细绳 2.0 设置当forktrue时要使用的编译器的可执行文件。
用户属性是maven.compiler.executable
<失败错误> 布尔值 2.0.2 指示即使出现编译错误,构建是否会继续。
默认值为true
用户属性是maven.compiler.failOnError
<失败警告> 布尔值 3.6 指示即使有编译警告,构建是否会继续。
默认值为false
用户属性是maven.compiler.failOnWarning
<文件扩展名> 列表 3.1 用于检查增量构建默认时间戳的文件扩展名仅包含.class
<forceJavacCompilerUse> 布尔值 3.0 编译器现在可以使用 javax.tools 如果在您当前的 jdk 中可用,您可以使用 -Dmaven.compiler.forceJavacCompilerUse=true 或在插件配置中禁用此功能
默认值为false
用户属性是maven.compiler.forceJavacCompilerUse
<叉子> 布尔值 2.0 允许在单独的进程中运行编译器。如果 为,则使用内置编译器,如果 为,则使用可执行文件。
默认值为false
用户属性是maven.compiler.fork
<生成的源目录> 文件 2.2

指定放置由注释处理创建的生成源文件的位置。仅适用于 JDK 1.6+


默认值为${project.build.directory}/generated-sources/annotations
<包括> 2.0 编译器的包含过滤器列表。
<jdk工具链> 地图 3.6

指定此 jdk 工具链的要求。这会否决 maven-toolchain-plugin 选择的工具链。

注意:至少需要 Maven 3.3.1
<最大内存> 细绳 2.0.1 设置内存分配池的最大大小,以兆字节为单位,例如。"128", "128m" 如果fork设置为true
用户属性是maven.compiler.maxmem
<记忆> 细绳 2.0.1 内存分配池的初始大小(以 MB 为单位),例如。"64", "64m" 如果fork设置为true
用户属性是maven.compiler.meminitial
<multiReleaseOutput> 布尔值 3.7.1 当设置为true时,这些类将放在 META-INF/versions/${release}中,必须设置发布值,否则插件会失败。
<优化> 布尔值 2.0 已弃用。此属性在javac中是无操作的。
默认值为false
用户属性是maven.compiler.optimize
<输出文件名> 细绳 2.0 将一组源编译为单个文件时设置输出文件的名称。表达式="${project.build.finalName}"
<参数> 布尔值 3.6.2 设置为true以生成元数据以反映方法参数。
默认值为false
用户属性是maven.compiler.parameters
<进程> 细绳 2.2

设置是否执行注释处理。仅适用于 JDK 1.6+ 如果不设置,编译和注解处理同时进行。

允许的值为:

  • none - 不执行注释处理。
  • only - 只进行注解处理,不进行编译。

<发布> 细绳 3.6 Java 编译器的 -release 参数,从 Java9
用户属性开始支持:maven.compiler.release
<显示弃用> 布尔值 2.0 设置是否显示使用已弃用 API 的源位置。
默认值为false
用户属性是maven.compiler.showDeprecation
<显示警告> 布尔值 2.0 设置为true以显示编译警告。
默认值为false
用户属性是maven.compiler.showWarnings
<跳过主要> 布尔值 2.0 将此设置为“真”以绕过主要来源的编译。不推荐使用它,但有时很方便。
用户属性是maven.main.skip
<skipMultiThreadWarning> 布尔值 2.5 (无描述)
默认值为false
用户属性是maven.compiler.skipMultiThreadWarning
<来源> 细绳 2.0

Java 编译器的 -source 参数。

注意:自 3.8.0 起,默认值已从 1.5 更改为 1.6
默认值为1.6
用户属性是maven.compiler.source
<陈旧的米利斯> 整数 2.0 设置最后修改日期的粒度(以毫秒为单位),以测试源是否需要重新编译。
默认值为0
用户属性是lastModGranularityMs
<目标> 细绳 2.0

Java 编译器的 -target 参数。

注意:自 3.8.0 起,默认值已从 1.5 更改为 1.6
默认值为1.6
用户属性是maven.compiler.target
<使用增量编译> 布尔值 3.1 启用/禁用增量编译功能
默认值为true
用户属性是maven.compiler.useIncrementalCompilation
<详细> 布尔值 2.0 设置为true以显示有关编译器正在做什么的消息。
默认值为false
用户属性是maven.compiler.verbose

参数详情

<annotationProcessorPaths>

作为注释处理器路径提供的类路径元素。如果指定,编译器将仅在那些类路径元素中检测注释处理器。如果省略,则使用默认类路径来检测注释处理器。检测本身取决于annotationProcessors的配置。

每个类路径元素都使用它们的 Maven 坐标(groupId、artifactId、版本、分类器、类型)来指定。传递依赖是自动添加的。例子:

<configuration>
  <annotationProcessorPaths>
    <path>
      <groupId>org.sample</groupId>
      <artifactId>sample-annotation-processor</artifactId>
      <version>1.2.3</version>
    </path>
    <!-- ... more ... -->
  </annotationProcessorPaths>
</configuration>
  • 类型java.util.List
  • : 3.5
  • 要求

<annotationProcessors>

要运行的注释处理器的名称。仅适用于 JDK 1.6+ 如果未设置,则应用默认注释处理器发现过程。

  • 类型java.lang.String[]
  • : 2.2
  • 要求

<compilerArgs>

如果fork设置为true ,则设置要传递给编译器的参数 。例子:

<compilerArgs>
  <arg>-Xmaxerrs</arg>
  <arg>1000</arg>
  <arg>-Xlint</arg>
  <arg>-J-Duser.language=en_us</arg>
</compilerArgs>
  • 类型java.util.List
  • : 3.1
  • 要求

<compilerArgument>

如果fork设置为true ,则设置要传递给编译器的未格式化的单个参数字符串。要传递多个参数,例如-Xmaxerrs 1000(实际上是两个参数),您必须使用 compilerArguments

这是因为传递给 Java 编译器的有效参数列表因编译器版本而异。

  • 类型java.lang.String
  • : 2.0
  • 要求

<compilerArguments>

已弃用。改用compilerArgs

如果fork设置为true ,则设置要传递给编译器的参数(添加破折号)。

这是因为传递给 Java 编译器的有效参数列表因编译器版本而异。

要通过-Xmaxerrs 1000 -Xlint -Xlint:-path -Averbose=true你应该包括以下内容:

<compilerArguments>
  <Xmaxerrs>1000</Xmaxerrs>
  <Xlint/>
  <Xlint:-path/>
  <Averbose>true</Averbose>
</compilerArguments>
  • 类型java.util.Map
  • 2.0.1
  • 要求

<compilerId>

要使用的编译器的编译器 ID。有关更多信息,请参阅本指南
  • 类型java.lang.String
  • : 2.0
  • 要求
  • 用户属性maven.compiler.compilerId
  • 默认值javac

<编译器重用策略>

重用创建的 javacc 类的策略:
  • 重用创建(默认):将重用已创建但在多线程构建的情况下,每个线程将有自己的实例
  • reuseSame:即使是多线程构建,每次编译都将使用相同的 Javacc 类
  • alwaysNew:每次编译都会创建一个新的 Javacc 类
请注意,此参数值取决于您使用的 os/jdk,但默认值应该适用于大多数 env。
  • 类型java.lang.String
  • : 2.5
  • 要求
  • 用户属性maven.compiler.compilerReuseStrategy
  • 默认值${reuseCreated}

<编译器版本>

要使用的编译器版本,例如。“1.3”、“1.5”,如果 fork设置为true
  • 类型java.lang.String
  • : 2.0
  • 要求
  • 用户属性maven.compiler.compilerVersion

<调试>

设置为true以在编译的类文件中包含调试信息。
  • 类型布尔值
  • : 2.0
  • 要求
  • 用户属性maven.compiler.debug
  • 默认值

<调试级别>

要附加到-g命令行开关的关键字列表。合法值为 none 或以下关键字的逗号分隔列表:linesvarssource。如果未指定调试级别,默认情况下,不会将任何内容附加到-g。如果未打开调试,则该属性将被忽略。
  • 类型java.lang.String
  • : 2.1
  • 要求
  • 用户属性maven.compiler.debuglevel

<编码>

Java 编译器的 -encoding 参数。
  • 类型java.lang.String
  • : 2.1
  • 要求
  • 用户属性编码
  • 默认值${project.build.sourceEncoding}

<不包括>

编译器的排除过滤器列表。
  • 类型java.util.Set
  • : 2.0
  • 要求

<可执行文件>

设置当forktrue时要使用的编译器的可执行文件。
  • 类型java.lang.String
  • : 2.0
  • 要求
  • 用户属性maven.compiler.executable

<失败错误>

指示即使出现编译错误,构建是否会继续。
  • 类型布尔值
  • 2.0.2
  • 要求
  • 用户属性maven.compiler.failOnError
  • 默认值

<失败警告>

指示即使有编译警告,构建是否会继续。
  • 类型布尔值
  • : 3.6
  • 要求
  • 用户属性maven.compiler.failOnWarning
  • 默认值

<文件扩展名>

用于检查增量构建默认时间戳的文件扩展名仅包含.class
  • 类型java.util.List
  • : 3.1
  • 要求

<forceJavacCompilerUse>

编译器现在可以使用 javax.tools 如果在您当前的 jdk 中可用,您可以使用 -Dmaven.compiler.forceJavacCompilerUse=true 或在插件配置中禁用此功能
  • 类型布尔值
  • : 3.0
  • 要求
  • 用户属性maven.compiler.forceJavacCompilerUse
  • 默认值

<叉子>

允许在单独的进程中运行编译器。如果 为,则使用内置编译器,如果 为,则使用可执行文件。
  • 类型布尔值
  • : 2.0
  • 要求
  • 用户属性maven.compiler.fork
  • 默认值

<生成的源目录>

指定放置由注释处理创建的生成源文件的位置。仅适用于 JDK 1.6+

  • 类型java.io.File
  • : 2.2
  • 要求
  • 默认值${project.build.directory}/generated-sources/annotations

<包括>

编译器的包含过滤器列表。
  • 类型java.util.Set
  • : 2.0
  • 要求

<jdk工具链>

指定此 jdk 工具链的要求。这会否决 maven-toolchain-plugin 选择的工具链。

注意:至少需要 Maven 3.3.1
  • 类型java.util.Map
  • : 3.6
  • 要求

<最大内存>

设置内存分配池的最大大小,以兆字节为单位,例如。"128", "128m" 如果fork设置为true
  • 类型java.lang.String
  • 2.0.1
  • 要求
  • 用户属性maven.compiler.maxmem

<记忆>

内存分配池的初始大小(以 MB 为单位),例如。"64", "64m" 如果fork设置为true
  • 类型java.lang.String
  • 2.0.1
  • 要求
  • 用户属性maven.compiler.meminitial

<multiReleaseOutput>

当设置为true时,这些类将放在 META-INF/versions/${release}中,必须设置发布值,否则插件会失败。
  • 类型布尔值
  • 3.7.1
  • 要求

<优化>

已弃用。此属性在javac中是无操作的。
设置为true以使用编译器的优化方法优化编译的代码。
  • 类型布尔值
  • : 2.0
  • 要求
  • 用户属性maven.compiler.optimize
  • 默认值

<输出文件名>

将一组源编译为单个文件时设置输出文件的名称。表达式="${project.build.finalName}"
  • 类型java.lang.String
  • : 2.0
  • 要求

<参数>

设置为true以生成元数据以反映方法参数。
  • 类型布尔值
  • 3.6.2
  • 要求
  • 用户属性maven.compiler.parameters
  • 默认值

<进程>

设置是否执行注释处理。仅适用于 JDK 1.6+ 如果不设置,编译和注解处理同时进行。

允许的值为:

  • none - 不执行注释处理。
  • only - 只进行注解处理,不进行编译。
  • 类型java.lang.String
  • : 2.2
  • 要求

<发布>

Java 编译器的 -release 参数,从 Java9 开始支持
  • 类型java.lang.String
  • : 3.6
  • 要求
  • 用户属性maven.compiler.release

<显示弃用>

设置是否显示使用已弃用 API 的源位置。
  • 类型布尔值
  • : 2.0
  • 要求
  • 用户属性maven.compiler.showDeprecation
  • 默认值

<显示警告>

设置为true以显示编译警告。
  • 类型布尔值
  • : 2.0
  • 要求
  • 用户属性maven.compiler.showWarnings
  • 默认值

<跳过主要>

将此设置为“真”以绕过主要来源的编译。不推荐使用它,但有时很方便。
  • 类型布尔值
  • : 2.0
  • 要求
  • 用户属性maven.main.skip

<skipMultiThreadWarning>

(没有说明)
  • 类型布尔值
  • : 2.5
  • 要求
  • 用户属性maven.compiler.skipMultiThreadWarning
  • 默认值

<来源>

Java 编译器的 -source 参数。

注意:自 3.8.0 起,默认值已从 1.5 更改为 1.6
  • 类型java.lang.String
  • : 2.0
  • 要求
  • 用户属性maven.compiler.source
  • 默认值1.6

<陈旧的米利斯>

设置最后修改日期的粒度(以毫秒为单位),以测试源是否需要重新编译。
  • 类型整数
  • : 2.0
  • 要求
  • 用户属性lastModGranularityMs
  • 默认值0

<目标>

Java 编译器的 -target 参数。

注意:自 3.8.0 起,默认值已从 1.5 更改为 1.6
  • 类型java.lang.String
  • : 2.0
  • 要求
  • 用户属性maven.compiler.target
  • 默认值1.6

<使用增量编译>

启用/禁用增量编译功能
  • 类型布尔值
  • : 3.1
  • 要求
  • 用户属性maven.compiler.useIncrementalCompilation
  • 默认值

<详细>

设置为true以显示有关编译器正在做什么的消息。
  • 类型布尔值
  • : 2.0
  • 要求
  • 用户属性maven.compiler.verbose
  • 默认值