日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Gradle: 我能控制你能不能編譯運(yùn)行

大家好,我是指北君。

鄞州ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

今天帶大家了解一下 Gradle 中 sourceCompatiblity 和 targetCompatibility 的使用配置和區(qū)別。

Java 中的版本處理

在了解 Gradle 中的 sourceCompatiblity 和 targetCompatibility 之前, 我們先來看看 Java 在編譯的時候,是怎么處理版本號的。

當(dāng)我們使用javac編譯一個Java程序時,我們可以為版本處理提供以下兩個關(guān)閉版本的編譯選項。

  • -source 指的是我們的 Java 代碼的語言版本和編譯的 JDK 相匹配(例如,1.8代表JDK8)。我們所提供的版本值將限制源代碼中使用的語言特性,使其符合各自的Java版本。
  • -target 指的是控制生成的類文件的版本。也就是說我們提供的版本值將是我們的程序可以運(yùn)行的最低Java版本。

舉個例子

javac HelloWorld.java -source 1.6 -target 1.8

上面的命令的意思就是 程序的運(yùn)行環(huán)境需要支持JDK 1.8 也就是 Java 8, 而源碼中不能包含 Java 6 以上版本的語言特性,比如說 Lambda 表達(dá)式等等。

Gradle 中的版本使用

Gradle 中需要依賴Java插件,然后通過一個叫 java 的 task 來配置 sourceCompatibility 和 targetCompatibility 屬性,也就是 javac 中的 -source? 和 -target 編譯選項。

讓我們來設(shè)置build.gradle文件

plugins {
id 'java'
}

group 'cn.javanorth'

java {
sourceCompatibility = "1.6"
targetCompatibility = "1.8"
}

通過一個例子來驗證一下:

我們創(chuàng)建一個叫 HelloWorld 的控制臺程序來進(jìn)行測試,創(chuàng)建一個 HelloWorldApp 的 class。

public class HelloWorldApp {
public static void main(String[] args){
System.out.println("Hello World!");
}
}

好,我們使用 gradle build 命令來編譯下,我們可以看到生成了一個 HelloWorldApp.class 的文件。

我們通過使用 javap 命令行工具來檢查這個class 的字節(jié)碼版本號。

javap -verbose HelloWorldApp.class

輸出結(jié)果如下:

public class cn.javanorth.helloworld.HelloWorldApp
minor version: 0
major version: 52
flags: ACC_PUBLIC, ACC_SUPER

這里的主版本號是52,也就是 Java 8 class 文件的版本號。這就意味著 HelloWorldApp.class 只能運(yùn)行在 JDK 1.8 以上版本。

再來測試一下 sourceCompatibility, 我修改一下代碼,增加一個 Java 6 沒有的特性,比如說 Lambda 表達(dá)式。

public class HelloWorldApp {

public static void main(String[] args){
Runnable helloLambda = () -> {
System.out.println("Hello World!");
}
helloLambda.run();
}
}

我們嘗試使用 gradle 進(jìn)行編譯, 可以看到有一個編譯錯誤。

error: lambda expressions are not supported in -source 1.6

-source選項相當(dāng)于Gradle 配置中 sourceCompatibility,可以讓我們的代碼在編譯過程中提前發(fā)現(xiàn)問題,如果我們不想引入更高的版本特性,使用這個選項可以確保我們不會誤用這些特性。比如說我們可能希望我們的應(yīng)用程序也能在Java 6 runtime 上運(yùn)行。

總結(jié)

在這篇文章中,我們了解如何使用 -source? 和 -target 編譯選項來處理我們的Java源代碼和目標(biāo)運(yùn)行時的版本。我們還可以通過Gradle 的 sourceCompatbility 和 targetCompatibility 配置使用這些編譯選項。


標(biāo)題名稱:Gradle: 我能控制你能不能編譯運(yùn)行
當(dāng)前鏈接:http://www.dlmjj.cn/article/dpghccc.html