99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

Maven項目如何鎖定JDK編譯與打包版本,避開版本錯配坑

Maven項目如何鎖定JDK編譯與打包版本,避開版本錯配坑 1. 一個版本錯配引發(fā)的連環(huán)坑前陣子幫一個團隊排查問題現(xiàn)象特別典型項目在開發(fā)機上跑得好好的一到構(gòu)建機上mvn clean package就報invalid target release: 17把構(gòu)建機的 JAVA_HOME 換到 17 之后編譯過了結(jié)果java -jar一啟動又拋UnsupportedClassVersionError說這個 class 文件是更高版本編譯的當(dāng)前運行環(huán)境不認識。來來回回折騰了小半天根因其實就一句話這個項目從頭到尾沒人明確說過自己該用哪個 JDK 版本編譯全靠各臺機器上碰巧裝了什么。這篇文章就圍繞java生態(tài)里最基礎(chǔ)也最容易翻車的一件事展開——maven項目如何明確指定編譯與打包所使用的JDK版本把編譯和打包兩個階段的版本來源徹底釘死。這件事的受眾比想象中廣。剛學(xué) Maven 的同學(xué)往往只知道m(xù)vn clean install能跑就算成功不知道背后是誰在調(diào)用javac更不知道去哪兒改工作兩三年的同學(xué)可能習(xí)慣了 IDEA 里點一下 Reload從沒關(guān)心過命令行構(gòu)建時用的是哪個 JDK至于團隊里的構(gòu)建維護者、CI 負責(zé)人這件事幾乎每周都要跟別人解釋一遍。我把這幾年踩過的坑、試過的幾種方案、以及每種方案的適用邊界整理在這里你可以按自己項目的實際情況直接抄配置。先說結(jié)論方便趕時間的同學(xué)對照單 JDK 環(huán)境用maven.compiler.release一行屬性就能搞定多 JDK 共存、需要嚴格隔離的場景上maven-toolchains-plugin臨時驗證用命令行切JAVA_HOME最快而fork executable這種寫法我基本不推薦后文會說為什么。但工具怎么選只是表層真正讓人反復(fù)踩坑的是那些看起來配了、其實沒生效的隱性配置這才是重點。1.1 JDK、JVM、Maven 三者的職責(zé)邊界很多人把這三個東西混著叫導(dǎo)致排查問題時抓不住重點。我們拆開看JDK是開發(fā)工具包里面包含了javac編譯器、java運行程序、javadoc、jar等一堆命令它決定了你能編譯出什么版本以及你能運行什么版本JVM是運行時是 JDK 的一部分準(zhǔn)確說是 JRE 的一部分而 JRE 又在 JDK 里只負責(zé)執(zhí)行字節(jié)碼Maven本身是一個 Java 程序它自己也是跑在某個 JVM 上的。這就帶來了一個非常關(guān)鍵的認知你機器上的 JDK 至少扮演了兩個角色——跑 Maven 的那個 JDK和編譯你代碼的那個 JDK。默認情況下它們是同一個因為 Maven 會拿自己所在 JVM 下面的javac去編譯。但這兩者是可以被分開的工具鏈機制干的就是這件事。理解了這一點后面很多為什么我改了配置還是不生效的困惑就迎刃而解了。還有一個容易被忽略的第三方角色IDE 自帶的編譯器。IntelliJ IDEA 默認不一定用 Maven 去構(gòu)建它有一套自己的增量編譯器和字節(jié)碼目標(biāo)版本設(shè)置這套設(shè)置和 pom 里的配置完全是兩個獨立的世界。這就是為什么經(jīng)常出現(xiàn)命令行編譯報錯、IDEA 里點運行卻沒事或者反過來的詭異現(xiàn)象。1.2 版本錯配的三種典型癥狀版本沒對齊報錯是分階段的認準(zhǔn)報錯出現(xiàn)的時機能省掉一大半排查時間。第一種是編譯期就掛。最常見的是invalid target release: 17意思是你讓我產(chǎn)出 17 版本的字節(jié)碼但我手里這個javac根本不認識 17。這幾乎可以斷定執(zhí)行編譯的 JDK 版本低于你配置的目標(biāo)版本。另一種是反向的報Source option 8 is no longer supported說明你用了太新的 JDK而它已經(jīng)不再支持這么老的語法目標(biāo)了——JDK 12 之后就徹底移除了對source 6的支持更老的版本還在被逐步淘汰。第二種是編譯過了運行期炸。典型報錯是UnsupportedClassVersionError: xxx has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0。這句話信息量很大61.0對應(yīng) Java 17 的字節(jié)碼52.0對應(yīng) Java 8 的運行時翻譯過來就是你用 17 編譯的卻拿 8 去跑。數(shù)字和版本的對應(yīng)關(guān)系后文會列表。第三種最陰險編譯運行都不報錯但行為不對。比如你用了 JDK 17 編譯目標(biāo)設(shè)為 8代碼里調(diào)了一個 Java 9 才有的方法編譯期毫無怨言部署到 Java 8 的服務(wù)器上運行時才拋NoSuchMethodError。這種問題的根源在于source/target參數(shù)只做語法和字節(jié)碼層面的降級它壓根不檢查你調(diào)用的 API 在那個版本里存不存在。要解決它必須用release參數(shù)這也是我后面重點推薦它的原因。2. 編譯與打包階段JDK 到底在哪里被用到2.1 編譯階段真正干活的是 javacMaven 自己不會編譯 Java 代碼。它做的事情是讀取 pom按生命周期順序調(diào)用一堆插件其中負責(zé)編譯的是maven-compiler-plugin而這個插件本質(zhì)上就是一個薄薄的包裝層它最終會去調(diào)用javac命令或者在進程內(nèi)調(diào)用編譯器 API。所以指定編譯 JDK 版本這句話拆開其實是兩個訴求一是讓哪個javac來執(zhí)行編譯二是告訴這個javac產(chǎn)出哪個版本的字節(jié)碼。前者靠的是JAVA_HOME、工具鏈或executable參數(shù)后者靠的是source、target、release這三個參數(shù)。很多人只做了后半件事然后奇怪為什么換臺機器就崩了因為前半件事他沒管默認跟著環(huán)境的JAVA_HOME漂移。判斷當(dāng)前實際用的是哪個javac最快的方法是mvn -v。它會打印出 Maven 版本、Maven Home 和 Java version 三行。注意這里顯示的是跑 Maven 的那個 JDK在沒有配置工具鏈的情況下它就是編譯用的 JDK。這個命令我建議你養(yǎng)成習(xí)慣每次遇到版本相關(guān)報錯先跑一遍看看比瞎猜快得多。2.2 打包階段不影響字節(jié)碼但影響能不能跑打包階段package及其后續(xù)的verify、install、deploy本身不會重新編譯代碼所以嚴格來說它不決定字節(jié)碼版本。但它決定了一些別的東西同樣會讓人翻車。maven-jar-plugin會在MANIFEST.MF里寫入Build-Jdk-Spec之類的信息這個值來自執(zhí)行構(gòu)建的 JDK可以當(dāng)線索用但不是決定性因素。更關(guān)鍵的是那些和運行時強相關(guān)的打包動作用jlink裁剪運行時鏡像時必須指定目標(biāo) JDK 的jmods目錄用jpackage做原生安裝包時入口 JDK 版本直接決定了產(chǎn)物的運行環(huán)境打 Docker 鏡像時基礎(chǔ)鏡像里裝的是哪個 JDK決定了容器里能不能跑起來。這些環(huán)節(jié)的版本都必須和編譯目標(biāo)保持一致否則就是鏡像是 8代碼是 17的經(jīng)典事故。還有一個隱形環(huán)節(jié)是測試。maven-surefire-plugin在test階段會拉起 JVM 執(zhí)行單元測試如果它用的 JDK 版本低于字節(jié)碼版本mvn package會在測試階段直接失敗。這也是為什么很多人明明只想跳過編譯問題結(jié)果卡在測試上——其實報錯信息已經(jīng)告訴你是版本問題了。實在需要先出包可以用-DskipTests跳過執(zhí)行但要注意-Dmaven.test.skiptrue是連編譯帶執(zhí)行一起跳兩者不一樣。3. 方案一用 properties 一把鎖死版本覆蓋八成場景3.1 最簡可用的 pom 配置如果項目只需要支持一個固定的 JDK 版本環(huán)境里也只有這一個 JDK那沒必要上工具鏈在pom.xml的properties里加一行就夠properties project.build.sourceEncodingUTF-8/project.build.sourceEncoding maven.compiler.release17/maven.compiler.release /propertiesmaven.compiler.release是maven-compiler-plugin約定的屬性名插件會自動讀取它。如果你想讓配置更顯式、更容易被后來的人看到也可以寫成完整形式build plugins plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-compiler-plugin/artifactId version3.13.0/version configuration release17/release encodingUTF-8/encoding /configuration /plugin /plugins /build這兩種寫法效果完全一樣區(qū)別只是可見性和優(yōu)先級。當(dāng)properties和configuration同時存在時configuration里的顯式配置優(yōu)先級更高會覆蓋屬性。所以我一般建議團隊里選一種風(fēng)格統(tǒng)一到底別混著寫否則新人看權(quán)限判斷容易懵。這里有個細節(jié)值得單獨說插件版本一定要顯式聲明。不寫版本時 Maven 會用一套內(nèi)置的默認版本這套默認版本跟著 Maven 的版本走不同 Maven 版本可能綁定不同的插件版本行為就會有細微差異。我見過一次構(gòu)建結(jié)果不一致最后查出來就是兩臺機器的 Maven 版本不同導(dǎo)致maven-compiler-plugin版本不同一個默認走source/target一個走了別的分支。聲明版本這件事成本幾乎為零收益是構(gòu)建可復(fù)現(xiàn)。3.2 source、target、release 三個開關(guān)怎么選這三個參數(shù)是本節(jié)的核心我用一張表把它們擺清楚參數(shù)作用層次是否校驗 API推薦度說明source語法層面否單用不推薦限制能用哪些語言特性比如 lambda、var、switch 表達式target字節(jié)碼層面否單用不推薦決定產(chǎn)出的 class 文件 major 版本號release語法 API 字節(jié)碼是強烈推薦JDK 9 引入等價于同時指定 source/target 并鎖定對應(yīng)的 API 簽名release的工作原理是讀取 JDK 自帶的ct.sym符號文件里面保存了歷史各版本的 API 簽名。編譯時它會拿目標(biāo)版本的簽名去核對你的調(diào)用一旦你用了高版本才有的類或方法直接編譯失敗而不是等到運行期炸。這個行為太有價值了它把第三類編譯運行都不報錯但行為不對的隱患提前到了構(gòu)建階段。舉一個我實際遇到的例子。代碼里寫了List.of(a, b)這是 Java 9 引入的工廠方法。如果配置是source8, target8用 JDK 17 編譯整個過程干干凈凈沒有任何警告但部署到 Java 8 環(huán)境后調(diào)用到這行就拋NoSuchMethodError: java.util.List.of。改成release8之后編譯期直接報錯no suitable method found for of(String,String)問題在提交代碼前就被攔住了。注意release參數(shù)只支持 JDK 9 及以上版本執(zhí)行編譯目標(biāo)版本理論上可以低到 6取決于你用的 JDK 還支持到哪一檔。如果你的構(gòu)建機還在用 JDK 8那這個參數(shù)用不了只能退回source/target并且要額外配置bootclasspath來近似達到同樣的效果麻煩不少。另外補一句 Spring Boot 項目的特殊情況。如果你繼承了spring-boot-starter-parent它已經(jīng)把java.version這個屬性接管了內(nèi)部會把它映射到編譯插件的配置上。所以 Boot 項目里只需要寫properties java.version17/java.version /properties不用再單獨配maven.compiler.release。但如果項目里既寫了java.version又寫了maven.compiler.release就要注意兩者的優(yōu)先級關(guān)系容易互相打架。我個人的做法是 Boot 項目里只保留java.version一處避免兩個真相來源。4. 方案二toolchains 讓 Maven 自己去挑 JDK4.1 toolchains.xml 寫在哪兒、怎么寫方案一有個前提編譯用的 JDK 必須是 Maven 所在的那個 JDK。但現(xiàn)實中經(jīng)常有這種需求——機器上裝著 JDK 8、11、17、21 四個版本Maven 本身習(xí)慣用 17 跑但某個老項目必須用 8 編譯。這時候切JAVA_HOME會很別扭因為切完 Maven 自己也是跑在 8 上了。工具鏈機制就是為這個場景設(shè)計的它讓 Maven 繼續(xù)用自己的 JVM 運行但把編譯任務(wù)派發(fā)給另一個 JDK。工具鏈的配置文件默認放在用戶目錄下的.m2/toolchains.xml內(nèi)容長這樣?xml version1.0 encodingUTF-8? toolchains toolchain typejdk/type provides version8/version vendororacle/vendor /provides configuration jdkHome/usr/lib/jvm/jdk1.8.0_381/jdkHome /configuration /toolchain toolchain typejdk/type provides version17/version vendortemurin/vendor /provides configuration jdkHome/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home/jdkHome /configuration /toolchain /toolchains幾個要點必須說清楚。type固定寫jdk這是唯一被廣泛支持的類型。provides里的version要和 pom 里聲明的能對上vendor是廠商標(biāo)識比如oracle、temurin、zulu、openjdk寫不寫看需求寫了匹配會更精確。jdkHome必須指向 JDK 的根目錄也就是bin/javac的上一級這一點在 macOS 上特別容易搞錯——要指到Contents/Home而不是.jdk那一層。這個文件放在用戶目錄下意味著它是機器級配置不進版本庫。這是個優(yōu)點也是缺點優(yōu)點是換機器不用改缺點是團隊新人的機器上如果沒有對應(yīng)的jdkHome構(gòu)建直接失敗而且報錯信息往往不夠直白。所以我認為工具鏈方案在團隊協(xié)作場景下必須配一份書面說明放 README 里否則就是給同事挖坑。4.2 pom 里的配套配置與生效驗證光有toolchains.xml還不夠這是最多人踩的坑——工具鏈不會自動生效必須在 pom 里顯式聲明使用哪個插件來讀取它plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-toolchains-plugin/artifactId version3.2.0/version executions execution goals goaltoolchain/goal /goals /execution /executions configuration toolchains jdk version17/version vendortemurin/vendor /jdk /toolchains /configuration /plugin這個插件做的事情很簡單在構(gòu)建早期插一腳去toolchains.xml里按條件找匹配的 JDK找到之后把它注冊到當(dāng)前構(gòu)建上下文里。之后凡是對工具鏈有感知的插件比如maven-compiler-plugin、maven-surefire-plugin、maven-jar-plugin都會用這個 JDK 而不是 Maven 自己的 JDK。注意source/target/release參數(shù)還是得配工具鏈只解決用哪個 javac不解決產(chǎn)出什么版本。如果provides里的version用的是通配寫法比如version1.8/version和實際寫version8/version匹配不上構(gòu)建會報找不到工具鏈。我建議在toolchains.xml里統(tǒng)一用主流寫法Java 8 就寫8別寫1.8能省掉不少莫名其妙的匹配失敗。驗證是否真的生效最直接的辦法是打開調(diào)試日志搜索關(guān)鍵字mvn -X clean compile 21 | grep -i toolchain你會看到類似Using toolchain: JDK 17 (Temurin)的輸出說明選中的是哪個 JDK。另一個驗證方式是執(zhí)行mvn -v和實際編譯目標(biāo)做對比如果mvn -v顯示 Java 是 17而編譯目標(biāo)是 8且編譯成功了那就說明工具鏈在正常工作。至于更直接的終局驗證手段我在第 6 節(jié)專門講。提示如果你的項目需要跨平臺構(gòu)建jdkHome路徑寫死會是個麻煩Windows 和 Linux 路徑完全不同。這種情況下只能給每個平臺準(zhǔn)備一份toolchains.xml或者用屬性占位符讓它從環(huán)境變量讀但配置復(fù)雜度上去了收益不一定劃算。5. 方案三與方案四臨時切換與 fork executable5.1 JAVA_HOME 與 PATH 的臨時切換最樸素的方案往往最可靠。只需要臨時驗證一下某個 JDK 版本能不能編譯直接在命令前面加上環(huán)境變量就行Linux/macOS 下JAVA_HOME/usr/lib/jvm/jdk-17 mvn clean packageWindows 的命令提示符下是set JAVA_HOMEC:\Program Files\Java\jdk-17 mvn clean packagePowerShell 下則是$env:JAVA_HOME...。這種寫法的好處是零配置、零污染用完就沒了特別適合排查到底是環(huán)境問題還是配置問題。它的缺點是每次都要手動帶容易忘而且一旦項目里還有別的插件依賴外部 JDK比如前面提到的jlink還得額外處理。這里必須提醒一個高頻陷阱JAVA_HOME和PATH里的java可能指向不同版本。Maven 讀的是JAVA_HOME但你手動敲java -version看到的是PATH里那個。這兩個不一致的時候你會看到mvn -v顯示 Java 17、java -version顯示 Java 8 的詭異場面然后懷疑人生。排查任何版本問題時請務(wù)必兩個都看一眼別只看其中一個。5.2 fork executable 的取舍maven-compiler-plugin還有一個fork配置項打開之后 Maven 會另起一個進程去執(zhí)行編譯這時可以配合executable指定絕對路徑的javacconfiguration forktrue/fork executable${env.JAVA17_HOME}/bin/javac/executable release17/release /configuration坦白說我不推薦在正式項目里這么干。原因有三個第一路徑強綁定操作系統(tǒng)Windows 上是javac.exe路徑分隔符還不一樣寫死了就沒法跨平臺第二它把機器的目錄結(jié)構(gòu)和構(gòu)建配置耦合在一起換臺機器就得改 pom第三fork會帶來額外的進程啟動開銷編譯幾百個類的時候能明顯感覺到慢。工具鏈方案在能力和可移植性上都優(yōu)于它除非你的場景極其特殊比如需要給javac傳一些進程級參數(shù)或者要同時用多個不同版本的 JDK 編譯同一模塊的不同部分否則沒必要走這條路。fork唯一我認可的用途是調(diào)試編譯器本身的行為比如你想看看javac到底收到了什么參數(shù)可以在compilerArgs里加-verbose通過fork讓輸出獨立出來看得更清楚。這種一次性的排查用完就刪不要留在 pom 里。6. 驗證怎么確認產(chǎn)物真的是目標(biāo)版本6.1 javap 與字節(jié)碼版本對照構(gòu)建成功不等于版本正確尤其是用了source/target而不是release的時候。最可靠的驗證方式是直接查字節(jié)碼的 major 版本javap -v target/classes/com/example/App.class | grep -i major version輸出major version: 61就說明是 Java 17 的字節(jié)碼。如果 jar 已經(jīng)打好了也可以從包里抽一個 class 出來看unzip -p target/app.jar com/example/App.class | xxd | head -n 1class 文件的前四個字節(jié)固定是魔數(shù)CAFEBABE緊接著兩個字節(jié)是次版本號再往后兩個字節(jié)就是 major 版本號。所以看到cafe babe 0000 003d0x3d就是 61對應(yīng) Java 17。下面這張對照表建議存下來Java 版本class 文件 major 版本十六進制Java 8520x34Java 11550x37Java 17610x3DJava 21650x41Java 22660x42Java 23670x43這張表在排查UnsupportedClassVersionError時特別有用報錯信息里給的就是 major 版本號不用去網(wǎng)上搜對照一下就知道是誰編譯的、該拿什么版本跑。6.2 用 jdeps 和真機運行兜底字節(jié)碼版本對上了不代表 API 調(diào)用就是安全的還是那個source/target的老問題。想驗證 API 層面有沒有越界可以用jdeps工具掃一遍jdeps --multi-release 17 -summary target/app.jar它會列出所有依賴的包和模塊能暴露出一些意料之外的引用。更嚴格的做法是在release參數(shù)的基礎(chǔ)上用目標(biāo) JDK 真實跑一遍單元測試。這一步可以在 CI 里做比如用 Docker 起一個目標(biāo)版本的 JDK 容器把編譯產(chǎn)物丟進去執(zhí)行冒煙測試。雖然多花幾分鐘但能擋住絕大多數(shù)運行期版本問題比上線后半夜被告警叫醒劃算得多。我自己的習(xí)慣是本地用javap快速看一眼 major 版本CI 里跑一個目標(biāo)版本的真機測試。兩個動作加起來成本很低但把版本問題的發(fā)現(xiàn)時間從運行時提前到了構(gòu)建時。7. 常見報錯排查速查表7.1 編譯期報錯怎么定位報錯信息關(guān)鍵詞真實含義處理方向invalid target release: X執(zhí)行編譯的 JDK 低于 X換更高版本 JDK或降低目標(biāo)版本Source option N is no longer supported當(dāng)前 JDK 已移除對 N 的支持升級目標(biāo)版本或換用更老的 JDK 編譯bootstrap class path not set只設(shè)了source沒設(shè)target或缺少引導(dǎo)類路徑直接改用release參數(shù)Fatal error compiling: error: release version X not supportedjavac不認識這個 release 值檢查 JDK 版本或插件版本過低找不到工具鏈 /Cannot find matching toolchainprovides條件與 pom 聲明對不上檢查 version、vendor 寫法是否一致NoSuchMethodError出現(xiàn)在測試階段測試 JVM 版本低于字節(jié)碼版本統(tǒng)一 surefire 的運行 JDK7.2 運行期報錯與 IDEA 的多套配置運行期的頭號報錯就是UnsupportedClassVersionError處理邏輯很清晰看報錯里的兩個數(shù)字一個是你產(chǎn)物的 major 版本一個是運行時的上限要么降低產(chǎn)物版本重新編譯要么把運行環(huán)境的 JDK 升上去。這里有個細節(jié)很多同學(xué)升級了JAVA_HOME但容器鏡像沒換或者反過來鏡像換了本地沒換導(dǎo)致我明明升級了啊的錯覺。排查時請同時確認三處本地mvn -v、構(gòu)建機環(huán)境、運行環(huán)境容器鏡像里的 JDK 版本。IDEA 的問題更繞因為它的版本設(shè)置有至少四個獨立入口任何一個不一致都會導(dǎo)致行為詭異。大致路徑是Project Structure Project里的 SDK 和 Language levelSettings Build, Execution, Deployment Compiler Java Compiler里的 Target bytecode versionSettings Build Tools Maven Runner里的 JRE以及 Maven 導(dǎo)入時使用的 JDK。這四處只要有一處沒跟上就可能出現(xiàn)IDEA 里能跑、命令行報錯的情況。注意最容易被忽略的是Language level和 Target bytecode version 這兩處。它們默認跟著 Project SDK 走但一旦被手動改過就會固定住之后你再換 SDK 它們也不變。遇到版本相關(guān)的怪問題先檢查這兩項有沒有被鎖死。排查 IDEA 問題時我有個簡單粗暴但有效的辦法在 Maven 工具窗口點一下 Reload然后看構(gòu)建輸出里有沒有版本相關(guān)的警告實在不行就把 IDEA 的編譯交給 Maven用mvn clean package的結(jié)果作為唯一真相。這樣可以先把 IDE 的干擾排除掉確定是配置問題還是環(huán)境問題。8. 團隊協(xié)作里的版本固化約定8.1 pom 固化加 Maven Wrapper單機跑通容易讓十個人的機器和 CI 跑出完全一樣的結(jié)果才是難點。我的做法是把三件事固定下來。第一JDK 目標(biāo)版本寫進 pom只留一處真相來源用maven.compiler.release或者 Boot 項目的java.version不允許在別的地方重復(fù)聲明。第二插件版本全部顯式聲明尤其是maven-compiler-plugin、maven-surefire-plugin、maven-jar-plugin這三個和版本強相關(guān)的。第三用 Maven Wrapper 固定 Maven 版本也就是mvnw那套東西。Maven Wrapper 值得單獨說一句因為很多人以為它管 JDK 版本其實不是。它管的是 Maven 自身的版本通過項目里的.mvn/wrapper/maven-wrapper.properties指定下載哪個 Maven 發(fā)行版。它解決的是我用 3.6、同事用 3.9、CI 用 3.8這種 Maven 版本漂移問題間接保證了插件默認版本的一致性。至于 JDKWrapper 目前不負責(zé)還得靠工具鏈或者環(huán)境約定。另外.mvn/jvm.config這個文件也挺有用可以給 Maven 自身設(shè)置 JVM 參數(shù)比如堆大小、時區(qū)、編碼。但注意它只能設(shè)置參數(shù)不能換 JDK別指望用它來指定編譯版本。8.2 CI 與本地的一致性檢查CI 上的版本問題往往比本地更集中因為 CI 環(huán)境是全新的沒有你本地那些碰巧裝對了的 JDK。我的建議是在流水線里加兩個前置動作一是打印環(huán)境信息mvn -v加上java -version一起輸出出問題時一眼就能看到二是在構(gòu)建完成后加一個字節(jié)碼版本校驗步驟用腳本解析 major 版本和期望值比對不一致就直接失敗。如果團隊里普遍存在多 JDK 需求那就老老實實上工具鏈并且把toolchains.xml的模板放一份在倉庫的docs目錄下寫清楚每個jdkHome該怎么填。新人入職按模板配一次之后就不用管了。比起每次都靠問一下老同事這套做法的長期成本低得多。最后分享一個我踩過的坑有一段時間我們的 CI 用的基礎(chǔ)鏡像默認裝了最新的 JDK隨著鏡像更新JDK 從 17 悄悄升到了 21因為release17還在編譯產(chǎn)物沒問題但某個注解處理器在新 JDK 上行為變了導(dǎo)致生成的代碼多了幾行測試用例開始間歇性失敗。這件事讓我意識到鏡像里的 JDK 版本也應(yīng)該被顯式固定比如指定eclipse-temurin:17-jdk這樣的確定標(biāo)簽而不是用latest或者不帶版本號的標(biāo)簽。構(gòu)建環(huán)境的確定性是靠一條條明確聲明堆出來的任何一處跟著最新走都會在某個時刻給你驚喜。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
婷婷五月丁香91| 六月丁香五月婷婷| 99热20| 中文字幕在线日亚州9| 色人五月婷婷| 秋霞A V毛片| 婷婷97| 国产无套精品一区二区| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 婷婷丁香红五月91C| 亚洲丁香婷婷丁香五月天激情| 热99国产精品| 91狠狠色色丁香婷婷综合久久| 久久伊人大香蕉| 丁香五月天论坛| 就99这里只有精品| 色婷婷操逼网| 疯狂做受XXXX高潮A片动画| 亚洲视频99| 天天搞夜夜六| 色五月网址| 大香蕉伊然在亚洲90| 丁香六月啪啪| 激情丁香社区| 影视av久久久噜噜噜噜噜三级| 思思热在线精品视频网站| 26.uuu丁香五月婷婷| 婷婷五月欧美综合| av亚洲国产小电影| 日日杆天天| 天天综合社区| 99爱无码| 婷色综合| 五月丁香六月激情| 人妻少妇色综合| 丁香五月天激情综合| renrencaoav| 99热在线精品播放| 亚洲99综合| 激情综合另类| 五月婷婷黄色毛片| 啪啪操操| 成人版视频在线观看| 国产在线网址1| 伊人综合网站| 91紱請| 99视频| 五月婷婷五月天亚洲无码| 丁香六月啪啪| site:901-07.com| 99干视频| 麻豆科斗777| 激情小说五月天| 91精品久久久久久久久久久久| 九九精品碰| 又大又粗九一在线| AⅤ网站在线看| 99精品热| 欧美3AaAa大片| xx色综合| 婷婷五月天成人综合网| www激情com| 狠狠操在线视频| 99这里有精品免费| 国产精品蜜臀99| 六月丁香深深爱| 五月婷婷六月丁香激情深爱| 国产精品色色666| 淫荡家庭AV| 色五月琪琪| 中文字幕永久免费| 夜夜躁狠狠 | 日韩精品一区二区三区,四区,五区视频| 超碰在线看| 欧美久久婷婷| 久久精品国产AV一区二区三区 | 热久久婷婷| 亚洲电影中文字幕| 青青草tp| 99色6爱9热| 激情影院内射| 五月丁香六月婷婷在线播放| 5月婷婷6月六月丁香| 九九热最新视频| 五月花婷婷| 成人视屏在线观看| 亚洲字幕AV一区二区三区四区| 777精品久无码人妻蜜桃| 丁香婷婷五月份| 久久人妻少妇嫩草AV| 91碰人人| 2020日日干| 日本熟妇精品99| 五月丁香六月婷| 丁香婷婷五月色成人网站| 久久久久8888| 婷婷性爱无码视频| 免费啪啪亚州视频| 最近中文字幕2019视频1| 九九综合网| 丁香五月婷婷天堂大香蕉| 色吧五月婷婷| 色性五月天| 婷婷成人AV| 99re8这里只有精品99re8热视频| 99热香港| 婷婷大香蕉| 亚洲AV激情五月综合网| 色天堂在线| www.夜夜操| 操大屄五月天视频| 五月天婷婷综合久久| 天色综合网站| 狠狠爱综合| 中文字幕日产A片在线看| 亚洲国产成人AV在线| 啪啪色激情五月天| 五月天色婷婷小说| 99激情网| 2015在线中文字幕| 少妇激情五月婷婷| 亚洲午夜AV| 香蕉婷婷五月| 丁香五月色色色色| 婷婷五月色综合| 99国产精品白浆在线观看免费 | 国产欧美日韩性爱| 色五月综合在线| 丁婷婷五月天在线播放| 91打屁股免费看| 91pornav在线| 婷婷五月天开心激情网| 香蕉AV777XXX色综合一区| 人操91在线| 99热青青草| 国产热精品| 久久久久久9| 青青草青青草五月天| 亚洲免费99| 午夜不卡成人一区二区| 99热免费在线| 九九aV| 午夜婷婷五月天| 亚洲日日操| 9色操| 五月婷婷六月激情在线| 五月天激情综合网| 九热久| 中文精品久久久久人妻不| 99 热国产在| 五月丁香成人视频| 五月丁香婷婷色播无码| 狠狠狠夜夜夜| 久久婷婷五月综合色和| 天天干天天爽天天爽| 99热在线观看免费精品| 五月天久久婷婷| 97热这里只有精品| 天堂综合久| 久久婷婷五月天激情唯美| 综合色播| 丁香六月天AV| 天天做天天爽| 色亚洲中文| 色五月婷婷在线| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 婷色人人狠| 欧美视频五区| 久久久999精品| 色色日本| 日韩av网站在线观看| 婷婷五月激情在线| 五月丁香婷久久| 日韩AAA| 九九无码| 婷婷五月天AV激情| 色欲天天综合网| 99这里有精品视频| 久久婷五月综合| 久热久re| 婷婷五月色综合| 欧洲精品爱爱| 五月丁香成人| 激情综合五月丁香| 嫩草AV久久伊人妇女超级A| 婷婷五月丁香五月| 99热综合| 婷婷五月天激情综合网| 自拍视频在线观看9| 天天免费日日夜夜夜夜| 蜜桃婷婷狠狠久久综合| 久久92| 99久久www| 色五月五月天色婷婷色五月| 日韩精品999| 五月天色区| 99热99| 成人免费va| 无语停婷丁香网| 色婷婷狠狠干芒果TV| 天天肏天天舔AV| www.99热. com这里只有精品| 91妻人人爽人人看片| 欧美性爱特黄一级aaaassss| 婷婷黄色网| 久久99激情丁香婷婷小说网| 欧美图片丁香五月天| 久久9热| 色碰碰| 可以看的av| 亚洲色色爱| 五月J香蕉婷婷| 99热这里只有精品2| 五月停性愛| 精品无码人妻一区| 五月丁香色停停啪啪啪| 99视频只有这里精品| 91婷婷五月丁香碰| 日韩中文欧美| 五月丁香影院| 激情婷婷亚洲五月| se色综合网| 久久99综合| 丁香伊人综合| 婷婷五月天丁香久久| 久久婷婷丁香| 丁香五月天无码| 天堂亚洲 在线| 五月丁香免费视频| 五月丁香婷婷激激激综合网色播| 变天就操逼婷婷五月| 猫咪伊人久久| 天天干天天干天天干天天干天天| 91婷婷色 | 操b视频在线观看一区二区| 99爱视频| 免費亭亭成人| 中文字幕欧美久久| 激情五月婷婷视频| www.天天干| 激情五月深爱五月| 婷婷五月电影| 色色九区| 色色9 9| 99热婷婷| 亚洲熟妇无码乱子AV电影| 综合激情五月综合激情五月激情1| 91九色成人原创视频| 天天精品视频免费观看| 日本婷色| 亚洲激情免费视频| 五月婷婷丁香大陆免费| 国产日比| 国产精品成人AV在线| 99精品国产在热久久| 天天草天天摸| 婷婷五月天激情影片| 9久久久久久久久久久| 日韩乱轮AV| 色婷五月| 欧美在线视频免费播放| A A色色| 久久99婷婷| 日韩aⅴ视频| 99性爱视频| 91视频综合网| 婷婷五月天激情AV影院| 五月天婷婷色紫薇阁| 久久九九@| 色色六月| 久草婷| 在线播放中文字幕| 久久婷婷综| 亚洲成人日韩无码精品| 激情五月丁香社区| www.色九月| 婷婷丁香色无五月| 看国产探花操逼三级片| 色婷婷色人人射| www.狠狠操.con| 婷婷色五月激情| www.婷婷六月天| 五月婷婷www| 97成人丁香| 在线中文AV| 香蕉AV福利精品导航| 丁香六月天婷婷在线| 婷婷久久丁香五月| 午夜免费试看| 五月丁香激情综合啪| 99综合视频一体| 另类激情五月| 五月丁香综合啪啪| 玖玖伦理电影| www,婷婷五月天,com| 丁香六月高清视频| 丁香五月激情综合啪啪| 日日夜夜狠狠操| 少妇达人正片在线播放_ikun_福利吧| 色五月婷婷基地| 婷婷六月啪啪| 婷婷九月丁香| 在线观看国产高清视频免费网站| 超碰亚洲欧美| 久婷视频| 婷婷色婷婷亚洲成人| 丁香无月在线观看| 九月婷婷丁香| 丁香五月婷婷六月丁香| 91操操| 黄色AV日韩| 97天堂| 色色五月天婷婷| 国产精品人人做人人爽人人添| 极品人妻VIDEOSSS人妻| 五月久久| 色色精品色| 婷婷五月欧美综合| 五月婷婷激情视频| 丁香色婷婷| 色色热| 草草色情综合网| 五月婷婷草| 天堂A∨在线| 久久这里有精品| 97精品人人A片免费看| 99热香港| 久久婷婷五月天懂色| 色色啊| 日本熟女内射| 99热国产| 99热九九九九| 7月婷婷六月丁香| 九九热在线观看视频网站| 欧美婷婷色五月| 色噜噜97视频在线观看| 国产做爰视频免费播放| 成人在线视频一区| 国产成人AV人人爽人人澡Va| 婷婷婷婷婷开心无码播放| 97九色视频| 五月婷视频| 五月九九综合| 亚洲精品va| av五月天婷婷丁香| 色婷婷狠狠18禁| 69天堂99| 五月丁香综合啪啪啪啪啪| 区区欧美你爱| 久久精彩免费视频| 操逼国产91| 五月天开心激情网色欲无码| 91啪啪网| 欧美日本不卡黄色片| 丁香六月啪啪啪| AV中文字幕夜夜操b天天摸bb | 色五月婷婷久久| 亚洲黄色网址| WWW夜夜| 五月婷婷五月天在线| 色五月首页| 伊人久久大香| 五月婷婷九| 久久婷婷视频| 天天肏高清在线| 五月天婷婷在看| 伊人www22综合色| 伊人婷婷福利网| 激情五月综合网| 久久色情综合免费网站| 久久艹 五月天| 人妻AV在线| 97色色色色色| 欧美A片在线视频免费观看| 就是色婷婷五月亚洲色| 日本久久性| 九九九九热99超碰| 玖玖精品视频99| 超碰在线99| 婷婷久久在线| 精品成人a v无码内射| 激情又色又爽又黄的A片| 婷婷五月综合色拍| 欧美日韩aaa| 中文字幕丰满孑伦无码专区| 亚洲激情亚洲激情| www,欧美干干干干干干| 五月天精品| 久久综合色五月| 五月激情视频网| 色婷婷综合网| 亚洲啪视频| 亚洲无码色色| 97热超碰| 丁香五月天激情免费在线观看AV777| 97人人射| 久久五月视频| 五月花婷婷| www.99精品在线| 久久久久久丁香五月| 91久久婷婷| 久久狠狠欧美| 欧美va在线| 4438成人电影| 日韩色情亚洲五月天婷婷| 成人精品视频99在线观看免费| 婷婷五月激情图片| 中文字幕在线免费| 激情四射五月天| 思思99热| 五月天丁香综合久久国产| http://www.sd-xiangsu.com/| 激情AV网| 五月丁香婷婷啪啪综合网| 99热精品在线播放| 五月情四婷婷| 激情五月综合网丁| 武汉美女啪啪视频免费一级片| 97综合在线| 伊人综合网站| 色五月色五天色情网| 国自产拍偷拍精品啪啪一区二区| 成人小说 五月天 婷婷| 九九成人电影婷婷| 五月丁香花激情综合网| 久草五月丁香婷婷综合| 日日爽日日| 狠狠久综合| 夜夜骑夜夜操| 26UUU欧美激情一区二区| 高清无码入口| 激情五月天色色| 日本人妻A片成人免费看片| 99精品在线观看视频| 91人人操.COM| 69堂午夜视频最新地址| 丰满少妇乱A片无码| 狠狠色丁香99| 色婷婷另类| 少妇综合网| 五月丁香花激情综合网| 九九碰九九爱97超碰| 玖月婷婷爱丁香| JAPANRCEP老熟妇乱子伦视频| 五月天合网| 超碰成人公开| 色五月在线观看| 五月天激情网址| 丁香五月色情| 五月激情婷婷女| 91大神在线免费看视频全集男男一起操| 99亚州综合精品成人网| 91色色色| 性爱视频99| 日韩精品超碰在线观看| 九九综合色| 99热免费精品热久久66| 五月丁香本色在线观看| 亚洲精品视频电影| 婷婷五月丁香综合激情小说| 激情骚五月| 色综合com| 888精品福利地址| 国产成人精品一区二三区熟女在线| 婷婷五月天色综合| 九九这里是免费的视频5| 天天操天天曰| 偷拍五月丁香| 激情综合五月激情XXXX| 婷婷激情五月天激情小说| 婷婷五月天在线观看| 五月婷婷新网站| 婷婷六月激情综合| 超碰人妻在线| 99爱视频免费| 欧美99热| 久久99精品久久久久久三级| 狠狠草狠狠草| 亚洲综合五月天| 天天做天天爱天天摸| 另类亚洲电影| 嫩草AV久久伊人妇女超级A| 婷婷色爱| 婷婷五月天成人动漫 | 婷婷激情五月视频| 亚洲情a| 97干视频在线| 久久久av久av久片一区二区| 色五月av| 99色在线观看| 噜噜色天天开心| 五月丁香六月激情网站| 久热91| 天天透天天爱| 99精品视频免费观看,| 在线婷婷| 狠狠久久婷婷| 啪啪日本欧美| 欧洲色色| 激情五月丁香婷婷| 五月婷婷丁香啪啪| 伊人五月成人| 91婷婷五月天综合视频| 久久色情| 狼人婷婷久久| 91婷婷五月丁香碰| www.亚洲激情.com| 午夜性做爰电影| 婷婷午夜天| 思思精品久久艹| 亚洲一个色| 激情久久丁香| www. 五月. com| 成人综合网站| 五月丁香六月天| 精品久久9| 99热免| 丁香五月狠狠综合欧美| 思思热99er在线视频| 超碰成人在线观看| 91视频免费后入强操| 成人在线免费网址| 美女被操一区二区| 91精品久久久久久久久久| 大香蕉AV在线| 五月婷婷六月丁香| 激情图片五月天| 99爱爱| 97色色综合| 婷婷香五月天| 婷婷五月天堂| 九九热免费视频| 九九色综合九九色| www、色色色| 人妻精品久久久久久久| 五月天婷爱综合| 这里只有精9| 国产亚洲精品AAAA片APP| 99热这| 99精品久久久| 99色婷婷| 99热婷婷| 亚洲爆乳无码精品AAA片蜜桃| 开心激情综合| 国精产品一区一区三区免费视频| 日韩免费视频| 国产免费性爱| 国产色香蕉精品五夜婷| 九9九9无码| 色涩影院六月丁香| 97操在线视频| 久久这里只有精品5| 婷婷五月激情四月综合| 五月在在观看| 天天色激情| 思思久久99热只有频精品66| 丁香六月婷婷色播| 五月婷婷欧美| www色色com| 精品欧美性爱超级爽| 大香蕉 婷婷| 婷婷的五月天另类视频| 亚洲AV无码成人精品区电影网| 96色婷婷| 中文字幕在线免费观看视频| 五月激情婷婷综合| 五月婷婷色综图片| 99热这里只有免费| 可以免费观看的AV| 久久草大香蕉| 草草色情综合网| 亚洲AV日韩AV永久无码网站| 婷婷五月天堂| 天天草天天爱| 亚洲aV写真天天综合网久久| 日韩无码专区| 色婷婷五月天在线| 天天操天天干天天日| 九九色人| 少妇大叫太大太粗太爽了A片| 久爱综合| 乱码操操| 五月天中文网| 棕合影院色色| 色婷婷在线电影| 91在线日本| 97干在线视频| 色婷婷狠狠干芒果TV| www.99热精品| 白人荫道BBWBBB大荫道| 踪合专区啪啪| 色婷婷五月天天天天天天天天天| 99热这里只有精品22| 五月丁香| 在线亚洲综合网| 91美女被操| 天天爽夜夜爽天天爽夜夜爽| 色欲婷婷五月天| 久九男女天堂| 国产成人网址| 五月天综合视频| 五月天色区| 丁香五月97视频| 婷婷五月在线免费| 丁香色五月婷婷| 超碰av在线| 色色色色色五月| 激情深爱婷婷网| 色五月激情| www久久久| 日本97久久久精品| 9这里只有精品| 精品香蕉99久久久久网站| 国产日批视频| 伊人综合色干| 国产精品VIDEOSSEX久久发布| 久热最新视频| 日韩五月婷婷| 亚洲精品乱码久久久久久按摩观| 激情五月婷婷五月| 午夜在线成人网站免费观看| 欧美在线| 午夜成人片400| 色屌丝中文字幕| 久久资源网五月婷| 婷婷五月乱交换| 五月天婷婷色小说| 丁香五月天色婷婷| 九九热视频99| 天天五月天综合网址| 夜夜操加勒比| 91热er| 最新av在线观看| 国产首页在线| 天天色色婷婷| 噜噜在线| 婷婷的99视频网站| 日本美女五月天| 99热10在线高清播放| 秋霞学生妹一二级| 婷婷色婷婷| 91人碰| 久久黄色片| 欧美性生交XXXXX无码小说| 丁香五月天堂网| 婷婷狠狠操| 操操熟女| 66色在线日韩| 婷婷五月激情五月丁香五月| 久 久9 9 热 视 频| 久久婷婷丁香花综合网| 很很操很很操| 亚洲人妻av伦理| 亚洲第一色色色| a久久| 久久97| 日韩无码色色| 深爱五月月天| 亚洲精品久久久久久久久久吃药| 九九99热久久精品66中文字幕| 超碰在线成人| 色情五月综合婷婷| 9久久婷婷国产综合精品性色| 精品免费99| 亚洲精品五月| 色综啪啪网| 六月丁香啪啪啪| 99精品视频网| 色墦五月丁香| WWW,五月| 色爱亚洲| 婷婷五月天激情文学| 久婷| 五月婷婷久久久| 色情成人五月天| 亚洲丁香婷婷丁香五月天激情| 婷婷五月天电影在线| 日韩狠狠色婷婷| 久色五月| 骚逼视频一区2区| 影音先锋777xfplay色资源网站| 亚洲在线网站| 婷婷综合在线| 亚洲国产婷婷色五月| 亚洲热视频| 就99这里只有精品| 91久久久久| 丁香五月天激情免费在线观看AV777 | 五月丁香激情婷婷综合| 熟妇国产| 91九色熟女| 超碰狠狠操| 国产69精品久久久久999小说| 青青草蜜臀| 99视频综合| 无码色| 99热这里| 国产激情久久久| 天天爽天天透天天爱| 一本婷婷丁香久久| 99热无码| 婷婷在线播放av| AA片在线观看视频在线播放| 日婷婷| 成人AV在线网站| 国产毛片精品一区二区色欲黄A片| 久久婷婷欧美| 久久思思99| 婷婷五月激情六月| jiujiu热在线视频| 亚洲六月色| 欧美久久网| 六月婷婷深深爱| 影音先锋AV资源男人站| 大香蕉人妻| 日本特黄aaaaa| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 99∨VTV| 色射影院| 字幕网AV中文字幕| 非洲一级AV| 伊人网欧美在线男人天堂五月丁香| 九九热99re8热免费观看 | 婷婷丁香人妻天天久久| 99热最新| 精品欧美性爱超级爽| 第四色大香蕉| 婷婷伊人无码| 色五月丁香伊人五月| 五月婷婷婷| 欧洲色| 亚洲激情高潮| 五月婷六月| 激情五月婷婷视频| 五月丁香偷拍| 色五月婷婷小说亚洲中文字幕组 | 日本久久婷| 五月丁香花免费视频| 五月天社区| 狠狠色噜噜色狠狠狠综合色 | 国产午夜精品AV一区二区麻豆| 激情婷婷五月天| 色综合久久88色综合天天人守婷| 啪啪综合| 99久久人人| 欧美搡BBBBB摔BBBBB| 亚洲激情综合| 色狠狠图片| 華人性愛AV在線| AAA久久久AAA久久久AAA| 婷婷五月丁香青青草在线| 久99| 久久久久久人妻| 日日爽天天| 亚州激情网站无码| 色啪网| 日本 色综合| 日逼AV影音先锋男人资源站| 91超级碰| 色婷婷电影网| 五月丁香婷婷色| 天天弄天天操| 亚洲激情综合免费| 99色爱| 丁香五月日本| 成人欧美一区二区三区在线观看| 久久久久久久久久8888| 国产.亚洲.欧洲视频在线| 39视频第二区| 最新婷婷五月丁香| 日韩99无码| 亚洲字幕AV一区二区三区四区| 九月婷婷激情| 日本九九网| 开心深爱激情网| 99九九精品| 欧美色色色| 日本熟女啪啪| 婷婷五月视屏| 亚洲啪| 五月综合六月婷婷| 久久大国产香蕉| 99只有这里是精品| 国产精品色情AAAAA片软件| 欧日美女Va| 五月综合视频| 久久杏爱视频| 国产五月视频| 99热在线这里只有精品| 99色在线观看| 梁铮版蜘蛛女在线观看| 熟女人妻一区二区三区免费看| 久久激情综合| 色五月av| 婷婷五月丁香久久| 99久久偷拍视频| 亚洲天堂aaa| 黄色激情网站在线观看| 日本精品人妻无码77777| 97在线观视频免费观看| 黄急一级视频| 久久日婷婷| 亚洲婷婷激情综合激情999精品| 任你干嘛免费视频播放| 久久综合丁香| 婷婷丁香五月天哟啪| 日本熟女三区| 色色网站免费观看| 丁香伊人激情| 婷婷激情社区| 狠狠爱五月婷婷| 99热这里全是精品| 另类图片色五月| 激情婷婷| 国内一级片| 久久九九囯产| 人妻久热| 99热在线免费观看精品| 欧美英丁香开心快乐六月天网| 综合网视频| 91干在线| 风流少妇A片一区二区蜜桃| 艹B高清无码| 五月丁香激情综合网官网| 国产精品岛国片在线观看免费| 99网址在线看| 丁香五月天激情婷婷丁香六月| 九九热思思热| 色亭亭五月天丁香综合AV - 百度 - 百度| 成人五月天视频| 五月丁香久| 狠狠干综合| 五月天另类小说久久小说网| 久热丁香| 色播丁香五月婷婷操:屄| 亚洲第一色区| 日日综合网| 天天日中文| 国产肏屄大片| 极品 少妇 内射| 婷婷色五月在线视频| 五月激情在线| 天堂网亚洲色图| 六月色婷婷色| 婷婷瑟瑟五月天| 99久久6| 色婷婷综合亚洲| 国产日产亚洲系列最新| 久激情网| 婷婷五月激情在线视频| 秋霞三级影视资源| 97电影99热| 任我干视频在线观看| 五月丁香香蕉| 天天在线XXX| 婷婷五月天激情偷拍| 中文资源在线a| 婷色天堂| 99综合视频| 六月久久婷婷| 久久视频这里99| 亚洲五月婷婷在线| 玖玖婷婷综合| www.色婷婷.com| 热无码A∨| 五月丁香好婷婷A片网| 九九无码AV| 久久99久久99精品免观看粉嫩| 天天婷婷天天| 激情综合五月天| aaa久久久| 色五月综合激情| 五月丁香六月婷婷免费| 123草逼网| 丁香婷婷久| 再綫Av免费視品| www.婷婷六月天| 蒲京久久无码视频| Av狠狠色丁香婷| 四色五月婷婷在线观看| 婷婷五月丁香五月| 99色在线视频| 天天舔天天爽| 九九精品大香蕉| 丁香女人五月天| 色综合丁香婷婷| 色香蕉精品五夜婷| 丁香五月天AV在线| 九月av| 色情婷婷久久五月天| 亚洲性图一区二区三区| 久99久在线| 99日视频在线| 啪啪小说五月天| 精品亚洲国产成AV人片传媒| 久久婷婷丁香五月一二三| 99久在线| 黄色成人网站在线播放| 新伍月婷婷| 99噜噜噜在线播放| 玖玖99福利| 激情婷婷五月天| 久婷自拍视频| 五月天婷婷在线观看| 五月婷婷激情啪啪| 69婷婷丁香午夜| 99这里都是精品| 婷婷亚洲色| 色域五月婷婷丁香| 欧美伊人9| 色色色五月婷| 狠狠色噜噜狠狠| 丁香五月激情网| 六月婷基地| 99在线资源| 激情爱爱网站超大免费| 99久久婷婷国产综合亚洲| 丁香五月激情网| 久久免费少妇高潮99精品| 91人人爱| 免费AV在线| 久久婷婷视频| 五月婷婷亚洲综合网| 99视频在线观看视频| 中文字幕婷婷五月天在线观看| 五月丁香花婷婷玉莉AV| 婷婷激情丁香五月天综合| 五月香蕉综合| 婷婷免费无视频| 这里只有精品视频99| 五月婷婷啪啪| 天天骑天天操| 91丨九色丨高潮丰满日本| 伊人五月天| 在线视频区| 久久超级碰视频| 五月丁香婷婷基地| 任我肏| 日日夜夜婷婷| 综合五月天亚洲婷婷| 免费视频无码| 婷婷五月综激情| 99综合在线| 91色婷婷综合久久中文字幕二区| 日本99热| 激情五月婷婷在线区| 密着浓厚中出乚交尾GvG935| 日本天天综合| 亚洲精品a成人在线播放| 天天狠狠色综合| 激情九九九九| 天天日天天干天天操| 丁香 久久| 色婷婷久综合久久一本国产AV| 99热99| 激情五月天影院| 色五月天丁香婷婷| 激情五月综合| www.狠狠色.com| 亚洲性爱AV在线| 91成人性爱视频| 天天综合网~91| 午夜丁香| 99re在线这里只有精品视频首页| www.九九婷婷| 日日噜狠狠色综| 午夜天堂一区人妻| 色婷婷基地| 热久久91| 丁香五月偷拍| 99色免费视频| 成人丁香五月| 99超超碰| 婷婷五月天激情综合| tingtingjiqingwuyue| 91夫妻网站九色| 五月天丁香久久| 777久久综合视频| 9色91视频| 九九这里是免费的视频5| 综合久久综合| 九九婷婷五月天| 久婷五月| 九六五月天婷婷| 午夜成人AV在线| 伊人婷婷五月天| 婷婷五月天激情文学| 亚洲免费看片| 中文字幕不卡网站| 91久久久久久| 亚洲精品激情| 色情性爱视频网址| 色婷婷激情五月天| 五月叮香啪| 俺也去在线视频| 97福利视频| 亚洲欧洲美女在线观| 婷婷五月无码| 亚洲五月天另类小说图片| 小视频在线亚洲| www99久久| 曰韩五月丁香色婷婷无码| 久久婷婷成人| 婷婷色色五月天| 五月激情婷婷四射| 国产精品色色| 久久亚洲无码| 亚洲精品五月| 九九热a| 97色天堂| 婷婷五月综合在线视频| 婷婷色播婷婷| www.91AV.com| 九九热免费视频| 99操免费视频| 精品国产va久久久久久久| 99热加勒比| 亚洲国产黄色电影| 五月天婷婷综合网| 欧美操人| 伊人干练久| 成人 在线 日韩| 伊人婷婷福利网| 色五月欧美| 碰97久久| 五月激情久久综合网| 性爱先锋AV| 黄色精品五月婷婷| 激情五月婷黄版| 天天射影院| 亚洲操操操| 五月丁香 啪啪| 四色五月婷婷| 九九热九九热精品| 深爱婷婷基地| 五月天婷婷免费| 久热AⅤ| 丁香五月激情啪啪啪| 夜夜嗨一区二区三区直播内容 | 开心五月网 | www.99热国产| www.久久99| 开心五月婷婷| 色婷婷亚洲精品天天综| 婷婷色五月激情强奸四射| 色导航色婷婷五月天在线观看| 色综合久久五月| 丁香五月婷婷啪啪| 色色五月婷| 91久女| 色婷婷伊人激情在线观看| 99人妻碰碰久久久禁片| a色色片| 久九色| 婷婷97碰碰| 丁香久久五月婷综合| 1024婷婷综合久久五月天| 欧美日韩五月婷婷| 久久精品五月| 欧美日韩中国| 99玖玖精品| 丁香六月欧美| 人妻中文av| 国产免费一区二区三州老师F1F1……| 国产小精品| 一本色道久久88综合日韩精品| 欧美99热| 久热伊人| 色婷婷六月| 国产精品国产成人国产三级| 久久99综合| AV在线不卡播放| 激情小说五月天| 伊人激情AV一区二区三区| 成人精品视频99在线观看免费| 中文字幕日产A片在线看| 日本不卡一区二区三区| 日本三级成人秘书精品片| 丁香五月 性爱| 国产成人亚洲综合亚洲| 99视频35精品视频在线观看| 热中文字幕| 99色啊| 五月丁香龟婷婷| 五月婷婷中文字幕AV| 99狠狠操一| 五月婷在线| 97在线观视频免费观看| 青青色com久久| 五月天婷婷情色| 99激情网| 伊人五月人妻精品| 91wwmm导航| 美女网黄| 开心激情站| 狠狠婷婷综合| 精品动漫 无码av| 九月丁香亭亭| 欧美激情五月天在线观看| 丁香五月婷婷骚视屏| 五月丁香成年黄色| 婷婷性爱| 91久女| 热久91| 综合另类视频| 丁香八月综合激情| 久久九九视频| 五月丁香在线观看| 第四色大香蕉| 婷婷五月天色色| 日本不卡高字幕在线2019| 色黄啪啪| 日本色色色| 激情黄色小说五月天| 五月婷婷深深爱| 202丰满熟女妇大| 综合久久综合五月天婷婷| 超碰免费人妻| 就爱操www com| 婷婷综合97| 俺去也五月| av成人在线播放| www.99热国产| 六月激情婷婷| 99热自拍| 99九九视频精彩在线| 干亚洲天堂| 第五色色色婷婷| 日韩人妻无码专区| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 色99热| 中文字幕日韩无码制服诱或| 亚洲成人av在线| 婷婷五月花| 天堂久久婷婷| 精品三区影院| 久久久WWW| 国产特黄色精品一区二区三区精品无广告| 久久婷婷影院| 色噜噜婷婷| 五月色亚洲| 欧美婷婷丁香五月| 亭亭色天香| 大香蕉欧美在线| 99视频| 五月久久五月激情| 少妇人妻凹凸视频| 色五月婷婷激情综合网| 久久99久久99www| 婷婷五月香蕉| 国产高清精品色| 国产激情综合五月久久| 男人天堂AV在线一区二区| 梁铮版蜘蛛女在线观看| 五月丁香婷婷三级| 人人摸人人干| 婷婷五月天激情电影| www.激情五月天com| 丁香五月婷婷色| 91黄址| 丁香五月激情鲁| 少妇真实被内射视频三四区| 大香蕉天堂| 婷婷激情五月综合在线视频| 99热91| 五月婷婷五月天| 日本爆乳片手机在线播放| 丁香五月亚洲综合丝袜| 激情五月综合色| 亚洲AV综合网| 人人人操 超碰| 五月亚洲激情| 婷婷久久综合久| 97资源碰碰| 欧美性爱五月天| 伊人影院久久网| 五月丁香 啪啪啪| 99网| 色色色97| 亚洲丁香五月天视频| 六月色 亚洲| 亚洲综合婷婷五月| 成人美女网| 成人五月天在线视频在线观看 | 丁香五月激情综合啪啪| 公的粗大挺进了我的密道| 五月天婷婷色在线视频免费观看| 这里只有精品9| 69热91天堂| 五月婷婷丁香在线视频| 久久AAAA片一区二区| 深爱激情九九五月天 | 人妻久久人妻久久第一区| 91高潮喷水久久久久久久久| 婷婷五月天综合中文| 激情五月婷婷综合秋霞| 色婷婷五月天天天做| 久久九九综合| 九九热视频99| a在线观看| 九九视频在线观看视频在线播放69| 99爱免费在线视频| 91聚色综合网| 婷婷夜夜操| 男人的天堂在线婷婷| 六月色播| 色婷婷激情四射视频| 亚洲色婷婷| 六月婷色| 在线中文av| 91色久| 色婷婷电影网| 视频免费精品免费精品免费精品免费精品免费精品免费精品免费99 | 开心五月婷婷| 五月丁香免费视频| 91久久99久久91熟女精品| 激情国产五月| 丁香五月天激情免费在线观看AV777| 婷婷丁香大香蕉| 欧美va在线观看| 99热加勒比| 色婷婷www| 精品无码av丁香五月激情| 中国女人做爰A片| 婷婷丁香五月噜噜噜| 97偷拍对白视频| 天天日夜夜| 黄网网站在线播放| 99久在线精品99re8| wwW天天干| 毛片九九九九九九九九18| 五月丁香色六月激情干大屄| 色婷丁香91| 色五月婷婷老师| 激情婷婷| 婷婷午夜天| 狠狠大香婷婷爱| 色偷偷AV亚洲男人的天堂| 26uuu91| 《久久综合九色综合97婷婷| 亚洲精品国产成人AV在线| www.激情五月| 色射婷婷五月天| 日韩欧美老妇性视频91久久久| 亚洲天码视频www蛋播视频| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 伊人久久丁香五月91| 丁香五月婷婷亚洲另类| 五月丁香A片| 黄色三级日本| 成人婷婷五月| 91综合视频在线| 丁香五月婷婷基地| 婷婷玉月丁香五月在线视频| 噜噜五月天综合| 五月丁香在线观看| 欧美性丁香色色五月天| 毛v一区二区视频| 色五月婷婷色| 色中色综合| 99久久玖玖| 99精品视频在线观看| 五月丁香五月综合欧美| 99精品激情| 久久性都花花世界成人免费视频| 久热黄色|