色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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
    +關注

    關注

    19

    文章

    2973

    瀏覽量

    104939
  • 源碼
    +關注

    關注

    8

    文章

    651

    瀏覽量

    29348
  • 編譯
    +關注

    關注

    0

    文章

    661

    瀏覽量

    32961
  • gradle
    +關注

    關注

    0

    文章

    26

    瀏覽量

    732
收藏 人收藏

    評論

    相關推薦

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

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

    Gradle構建的多模塊Spring Boot項目

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

    gradle安裝與配置unity

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

    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 ?1654次閱讀

    gradle和gradlew的區別?

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

    Gradle入門知識之Gradle詳解

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

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

    大家回想一下自己第一次接觸`Gradle`是什么時候? 相信大家也都是和我一樣,在我們打開第一個AS項目的時候, 發現有很多帶gradle字樣的文件:`setting.gradle, build.
    的頭像 發表于 03-30 10:51 ?902次閱讀
    <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 ?1038次閱讀
    <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 ?766次閱讀

    Gradle Plugin和AGP的區別1

    Gradle Plugin`和`AGP`的區別? `Gradle Plugin`是`Gradle`構建過程中使用的插件的總稱,而`Android Gradle Plugin`是這
    的頭像 發表于 03-30 11:48 ?1257次閱讀
    <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 ?1285次閱讀
    主站蜘蛛池模板: 潮 喷女王cytherea| 日本人奶水中文影片| 久久一本岛在免费线观看2020| 蜜桃最新网址| 玄幻全黄h全肉后宫| 99国内偷揿国产精品人妻| 国产成人免费在线| 亚洲2017久无码| 99无码熟妇丰满人妻啪啪| 国产精品一区二区激情| 内射白嫩少妇超碰| 亚洲一区二区三不卡高清| 国产99视频在线观看| 嗯好大好猛皇上好深用力| 亚洲AV无码乱码国产精品品麻豆 | 桃色园社区| 99热热在线精品久久| 久久精品视在线-2| 亚洲 欧美 日韩 国产 视频| 抽插妇女疯狂视频| 欧美末成年videos丨| 幼儿交1300部一区二区 | 伊人不卡久久大香线蕉综合影院| 国产ts在线| 日本久久精品免视看国产成人 | 玩弄放荡人妻一区二区三区| 99成人在线| 毛片TV网站无套内射TV网站| 亚洲色欲色欲无码AV| 国产在线播放KKK| 午夜婷婷精品午夜无码A片影院| 俄罗斯videosbest8| 日本aaaa| 岛国电影网址| 日本伦子欲| 大屁股国产白浆一二区| 日韩在线av免费视久久| 成人在线免费视频| 色橹橹欧美在线观看视频高清| 粗好大用力好深快点漫画| 色噜噜噜视频|