Apache Maven编译器插件

x33g5p2x  于2022-10-06 转载在 Apache  
字(2.7k)|赞(0)|评价(0)|浏览(480)

1.概述

本快速教程介绍编译器插件,它是Maven构建工具的核心插件之一。编译器插件用于编译项目的源代码。

2.插件目标

编译器插件有两个目标。两者都已绑定到Maven生命周期中的适当阶段,因此在各自的阶段中自动执行。
*compiler:compile绑定到编译阶段,用于编译主源文件。
*compiler:testCompile绑定到测试编译阶段,用于编译测试源文件。

3.使用

编译Java源代码:

mvn compile

要编译测试源:

mvn test-compile

4.配置编译器插件

由于编译器插件在其阶段自动执行,因此您不必像许多其他插件那样执行。但是,您应该指定编译器插件的版本。

<project>
  ...
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.7.0</version>
          <configuration>
            <!-- put your configurations here -->
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
  ...
</project>

5.示例

请参考以下示例并在您的项目中使用。

示例1:使用不同的JDK编译源

compilerVersion 参数可用于指定插件将使用的编译器版本。然而,您还需要将fork设置为true才能使其工作。例如:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
          <verbose>true</verbose>
          <fork>true</fork>
          <executable><!-- path-to-javac --></executable>
          <compilerVersion>1.3</compilerVersion>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

为了避免对可执行文件的文件系统路径进行硬编码,可以使用属性。例如:

<executable>${JAVA_1_4_HOME}/bin/javac</executable>

然后,每个开发人员在设置中定义此属性。xml,或设置环境变量,以便构建保持可移植性。

<settings>
  [...]
  <profiles>
    [...]
    <profile>
      <id>compiler</id>
        <properties>
          <JAVA_1_4_HOME>C:\Program Files\Java\j2sdk1.4.2_09</JAVA_1_4_HOME>
        </properties>
    </profile>
  </profiles>
  [...]
  <activeProfiles>
    <activeProfile>compiler</activeProfile>
  </activeProfiles>
</settings>

示例2:设置Java编译器的-source和-target

有时,您可能需要将某个项目编译为与当前使用的版本不同的版本。javac可以使用*-source-target*接受这样的命令。编译器插件还可以配置为在编译期间提供这些选项。
例如,如果您希望使用Java 8语言功能(-source 1.8),并且还希望编译的类与JVM 1.8(-target 1.8)兼容,则可以添加以下两个属性,它们是插件参数的默认属性名:

<project>
  [...]
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  [...]
</project>

或直接配置插件:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

6.结论

在这个快速指南中,我们介绍了编译器插件,并给出了使用和定制它的说明。本教程的完整源代码可以在GitHub上找到。

相关文章

微信公众号

最新文章

更多