使用非 Javac 编译器

与此插件的名称相反,Compiler Plugin 不会自行编译项目的源代码。为了编译,编译器插件使用另一个类来编译它们。参数compilerId确定将使用哪个类。目前,Compiler Plugin 与带有 artifactId plexus-compiler-javac的javac编译器工件捆绑在一起,可以看作是 Compiler Plugin 的 POM 中声明的依赖项之一。

Plexus 编译器组件在 groupId org.codehaus.plexus下还有一些其他可用的编译器 ID :

  • aspectj与 artifactId plexus-compiler-aspectj
  • csharp与 artifactId plexus-compiler-csharp
  • 带有 artifactId plexus-compiler-eclipse 的Eclipse
  • jikes与 artifactId plexus-compiler-jikes

使用其他 Plexus 编译器

要使用任何非 javac 编译器,您需要在 Compiler Plugin 运行时使工件在类路径中可用。这可以通过在项目的pom.xml中声明插件时添加依赖项来实现。下面的例子展示了如何使用csharp编译器:

<project>
  [...]
  <build>
    [...]
    <plugins>
      [...]
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.10.1</version>
        <configuration>
          <compilerId>csharp</compilerId>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-compiler-csharp</artifactId>
            <version>1.6</version>
          </dependency>
        </dependencies>
      </plugin>
  [...]
</project>