在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Gradle中的版本使用

科技綠洲 ? 來源:Java技術指北 ? 作者:Java技術指北 ? 2023-09-25 15:32 ? 次閱讀

今天帶大家了解一下 Gradle 中 sourceCompatiblity 和 targetCompatibility 的使用配置和區別。如果有對 Gradle 不太了解的朋友可以看我們之前的一些文章。

Java 中的版本處理

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

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

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

舉個例子

javac HelloWorld.java -source 1.6 -target 1.8

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

Gradle 中的版本使用

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 配置使用這些編譯選項。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    20

    文章

    2983

    瀏覽量

    106495
  • 源碼
    +關注

    關注

    8

    文章

    665

    瀏覽量

    30054
  • 編譯
    +關注

    關注

    0

    文章

    674

    瀏覽量

    33591
  • gradle
    +關注

    關注

    0

    文章

    26

    瀏覽量

    816
收藏 人收藏

    評論

    相關推薦

    Gradle版本目錄功能的簡單應用

    。 0. 概述 Gradle 版本目錄是 Gradle7 引入的新功能。使用 Gradle 版本
    的頭像 發表于 09-30 11:12 ?1618次閱讀

    Gradle構建的多模塊Spring Boot項目

    0. 前言 相比起 Maven 的 XML 配置方式,Gradle 提供了一套簡明的 DSL 用于構建Java 項目,使我們就像編寫程序一樣編寫項目構建腳本。 本文將從無到有創建一個用 Gradle
    的頭像 發表于 09-25 14:46 ?3397次閱讀
    <b class='flag-5'>Gradle</b>構建的多模塊Spring Boot項目

    gradle安裝與配置unity

    ://gradle.org/install/)并下載適用于你的操作系統的最新版本Gradle。根據你的操作系統,選擇相應的發行版并根據指示進行
    的頭像 發表于 12-07 14:48 ?2819次閱讀

    Android Studio與Gradle深入

    ://jcenter.bintray.com/" }  下載不到特定的版本  Maven 和 Gradle 都會有一個緩存庫,默認安裝的情況下,是在用戶根目錄下的 .m2 或者 .gradle 文件夾
    發表于 08-31 17:58

    Gradle for Android

    Gradle for Android
    發表于 07-16 15:50

    HarmonyOS初步探索04:使用DevEco Studio時設置Gradle倉庫代替

    /huawei-gradlebuild/”} } 依賴項{ // gradle-intellij-plugin用于構建JetBrains插件//請確保始終升級到最新版本// http
    發表于 12-15 14:26

    DevEco報錯不能順利進入gradle8.0怎么解決?

    報錯內容為:此版本中使用了已棄用的 Gradle 功能,使其與 Gradle 8.0 不兼容。翻譯一下,大概有些人說這個中外使用了Gradle的特性,但它應該與
    發表于 04-21 11:15

    谷歌 Android Studio 和 Gradle 插件使用全新版本編號

    在 Canary 通道已正式發布。在此版本,調整了 Android Studio 和 Gradle 插件的版本編號方案。此項變更將 Gradle
    的頭像 發表于 12-11 10:49 ?1785次閱讀

    gradle和gradlew的區別?

    你會注意到輸出里打印了 Gradle版本,它對應著你運行的 gradle 命令在設備Gradle 安裝包
    的頭像 發表于 12-13 09:57 ?1802次閱讀

    Gradle入門知識之Gradle詳解

    大家回想一下自己第一次接觸`Gradle`是什么時候? 相信大家也都是和我一樣,在我們打開第一個AS項目的時候, 發現有很多帶gradle字樣的文件:`setting.gradle, build.
    的頭像 發表于 03-30 10:47 ?2701次閱讀
    <b class='flag-5'>Gradle</b>入門知識之<b class='flag-5'>Gradle</b>詳解

    Gradle入門知識之Gradle詳解(下)

    大家回想一下自己第一次接觸`Gradle`是什么時候? 相信大家也都是和我一樣,在我們打開第一個AS項目的時候, 發現有很多帶gradle字樣的文件:`setting.gradle, build.
    的頭像 發表于 03-30 10:51 ?1032次閱讀
    <b class='flag-5'>Gradle</b>入門知識之<b class='flag-5'>Gradle</b>詳解(下)

    Gradle入門知識之Gradle語法1

    很多開發喜歡把`Gradle`簡單定義為一種構建工具,和`ant,maven`等作用類似, 誠然Gradle確實是用來做構建,但是如果簡單得把Gradle拿來做構建,就太小看Gradle
    的頭像 發表于 03-30 10:54 ?1163次閱讀
    <b class='flag-5'>Gradle</b>入門知識之<b class='flag-5'>Gradle</b>語法1

    Gradle入門知識之Gradle語法2

    很多開發喜歡把`Gradle`簡單定義為一種構建工具,和`ant,maven`等作用類似, 誠然Gradle確實是用來做構建,但是如果簡單得把Gradle拿來做構建,就太小看Gradle
    的頭像 發表于 03-30 10:54 ?849次閱讀

    Gradle Plugin和AGP的區別1

    Gradle Plugin`和`AGP`的區別? `Gradle Plugin`是`Gradle`構建過程中使用的插件的總稱,而`Android Gradle Plugin`是這
    的頭像 發表于 03-30 11:48 ?1400次閱讀
    <b class='flag-5'>Gradle</b> Plugin和AGP的區別1

    Gradle Plugin和AGP的區別3

    Gradle Plugin`和`AGP`的區別? `Gradle Plugin`是`Gradle`構建過程中使用的插件的總稱,而`Android Gradle Plugin`是這
    的頭像 發表于 03-30 11:50 ?1396次閱讀
    主站蜘蛛池模板: 1024人成网站色 | bt种子磁力天堂torrent | 免费精品美女久久久久久久久 | 成人在线一区二区 | 在线女同免费观看网站 | 伊人久久综合成人网小说 | 亚洲日本欧美日韩高观看 | 黄h视频| 欧美日韩在线成人看片a | 免费欧洲美女与动zooz | 免费国产黄网站在线观看视频 | 天天操夜夜操免费视频 | 67pao强力打造高清免费 | 情趣店上班h系列小说 | 四虎一影院区永久精品 | 欧美黄视频在线观看 | 67pao强力打造 | 国内视频一区 | 天天做天天爱夜夜爽毛片毛片 | 免费国产黄网站在线观看视频 | 俺去啦在线视频 | 伊人草| bt种子在线www天堂官网 | www 在线播放 | 人人天天夜夜 | 人人澡人人搞 | 亚洲色图综合图区 | 天天拍天天射 | 久久99免费| 激情综合五月天丁香婷婷 | 天天干天天做天天操 | 国产综合图片 | 成年人毛片网站 | 亚洲影视久久 | 无夜精品久久久久久 | 午夜小影院 | 97久久精品国产精品青草 | 久久99久久精品国产只有 | 天天干天天插天天操 | 免费观看视频 | 久久久噜久噜久久gif动图 |