Maven设置项目的Java编译版本

在POM文件里加几行代码就能快速搞定

References:

有时,可能需要将项目编译为与当前使用的JDK不同的版本。javac可使用-source-target完成这样的事。Compiler Plugin也可以对这些进行设置。例如需要Java 8的功能(-source 1.8), 并且还希望编译的类与JVM1.8兼容(-target 1.8), 则可以添加下面的属性,它们是插件的参数名:

<project>
  [...]
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  [...]
</project>

或者直接配置插件:

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

以上二选一即可,需要注意的是,如果仅设置了target而不设置source可能会导致编译失败。因此,Java9之后新增了release选项, 例如:

<properties>
    <maven.compiler.release>11</maven.compiler.release>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

或者

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <release>11</release>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>

我尝试了下,上面设置properties方式不能被正确的处理,下面直接设置plugin就正常,不知道是哪有问题。
另外,如果是spring boot项目,还有更简单的:

<properties>
    <java.version>11</java.version>
</properties>

标签: none

添加新评论

ali-01.gifali-58.gifali-09.gifali-23.gifali-04.gifali-46.gifali-57.gifali-22.gifali-38.gifali-13.gifali-10.gifali-34.gifali-06.gifali-37.gifali-42.gifali-35.gifali-12.gifali-30.gifali-16.gifali-54.gifali-55.gifali-59.gif

加载中……