大家好,我是指北君。
鄞州ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!
今天带大家了解一下 Gradle 中 sourceCompatiblity 和 targetCompatibility 的使用配置和区别。
在了解 Gradle 中的 sourceCompatiblity 和 targetCompatibility 之前, 我们先来看看 Java 在编译的时候,是怎么处理版本号的。
当我们使用javac编译一个Java程序时,我们可以为版本处理提供以下两个关闭版本的编译选项。
举个例子
javac HelloWorld.java -source 1.6 -target 1.8
上面的命令的意思就是 程序的运行环境需要支持JDK 1.8 也就是 Java 8, 而源码中不能包含 Java 6 以上版本的语言特性,比如说 Lambda 表达式等等。
Gradle 中需要依赖Java插件,然后通过一个叫 java 的 task 来配置 sourceCompatibility 和 targetCompatibility 属性,也就是 javac 中的 -source 和 -target 编译选项。
让我们来设置build.gradle文件
plugins {
id 'java'
}
group 'cn.javanorth'
java {
sourceCompatibility = "1.6"
targetCompatibility = "1.8"
}
通过一个例子来验证一下:
我们创建一个叫 HelloWorld 的控制台程序来进行测试,创建一个 HelloWorldApp 的 class。
public class HelloWorldApp {
public static void main(String[] args){
System.out.println("Hello World!");
}
}
好,我们使用 gradle build 命令来编译下,我们可以看到生成了一个 HelloWorldApp.class 的文件。
我们通过使用 javap 命令行工具来检查这个class 的字节码版本号。
javap -verbose HelloWorldApp.class
输出结果如下:
public class cn.javanorth.helloworld.HelloWorldApp
minor version: 0
major version: 52
flags: ACC_PUBLIC, ACC_SUPER
这里的主版本号是52,也就是 Java 8 class 文件的版本号。这就意味着 HelloWorldApp.class 只能运行在 JDK 1.8 以上版本。
再来测试一下 sourceCompatibility, 我修改一下代码,增加一个 Java 6 没有的特性,比如说 Lambda 表达式。
public class HelloWorldApp {
public static void main(String[] args){
Runnable helloLambda = () -> {
System.out.println("Hello World!");
}
helloLambda.run();
}
}
我们尝试使用 gradle 进行编译, 可以看到有一个编译错误。
error: lambda expressions are not supported in -source 1.6
-source选项相当于Gradle 配置中 sourceCompatibility,可以让我们的代码在编译过程中提前发现问题,如果我们不想引入更高的版本特性,使用这个选项可以确保我们不会误用这些特性。比如说我们可能希望我们的应用程序也能在Java 6 runtime 上运行。
在这篇文章中,我们了解如何使用 -source 和 -target 编译选项来处理我们的Java源代码和目标运行时的版本。我们还可以通过Gradle 的 sourceCompatbility 和 targetCompatibility 配置使用这些编译选项。
分享文章:Gradle: 我能控制你能不能编译运行
文章源于:http://www.shufengxianlan.com/qtweb/news26/247926.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联