maven指定编译版本

博客介绍了javac和maven指定JDK编译版本的相关内容。javac的source指定编译源代码的JDK语法版本,target指定生成class文件的JDK版本,最好设置对应JDK版本的boot classes文件。maven中默认编译版本为1.6,需自行设置,有两种设置方式,Java 9后新增选项,spring boot也有其配置方式。

javac

先从javac的编译选项-source,-target说起:

  • -source:指定使用什么版本的JDK语法编译源代码。java语法总是向后兼容的,为何需要设置呢?不晓滴
  • -target:指定生成特定于某个JDK版本的class文件。高版本的class文件不被低版本支持,因此需要该项。注意,最好设置-bootclasspath指定对应JDK版本的boot classes文件,否则即使设置了-target也不能在指定版本上运行class文件

一般情况下,-target-source设置一致,可以不用设置-target,但最好设置它。

maven

maven中可以指定JDK编译版本,还需要确定一下IDE中JDK的使用版本

在最新的maven中,默认编译版本为1.6,所以需要自己设置为指定版本。

设置有两种方式:

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

<plugins>
    <plugin>    
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>
</plugins>

两种一致,都是使用maven-compiler-plugin实现的,插件会在编译时添加source,target选项。通过插件可以配置更多的选项。

在Java 9后,新增了选项release,同时指定编译和输出时的JDK版本。也能配置插件,但这里仅给出方便的方式:

<properties>
    <maven.compiler.release>9</maven.compiler.release>
</properties>

在spring boot中,有独属于它自己的配置方式,它也是通过插件实现的(spring boot项目默认添加了):

<properties>
     <java.version>1.8</java.version>
</properties>   

参考

指定Java编译器版本的确切方式取决于使用的是Java 8或更早版本,还是Java 9或更高版本。 ### 适用于Java 8和更早版本 在Java 8和更早版本中,可以通过配置`maven-compiler-plugin`插件来指定编译版本。在`pom.xml`文件中添加如下配置: ```xml <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> </configuration> </plugin> </plugins> </build> ``` 上述代码中,`<source>`指定Java源代码的版本,`<target>`指定生成的字节码的版本。 ### 适用于Java 9及更高版本 从Java 9开始,新增了`release`选项,可同时指定编译和输出时的JDK版本。可以在`pom.xml`文件的`<properties>`标签中进行配置: ```xml <properties> <maven.compiler.release>9</maven.compiler.release> </properties> ``` 上述代码指定了编译和输出使用的JDK版本为9 [^2]。 ### 全局配置方式 全局配置是指在`settings.xml`中进行配置,其中`{MAVEN_HOME}`指的是Maven的安装目录。例如,要配置JDK 1.8,打开`settings.xml`文件,然后在`<profiles></profiles>`之间添加如下代码: ```xml <profile> <id>jdk18</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile> ``` 上述代码配置了全局默认使用JDK 1.8进行编译 [^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值