久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码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)境不認(rè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 負(fù)責(zé)人這件事幾乎每周都要跟別人解釋一遍。我把這幾年踩過的坑、試過的幾種方案、以及每種方案的適用邊界整理在這里你可以按自己項目的實際情況直接抄配置。先說結(jié)論方便趕時間的同學(xué)對照單 JDK 環(huán)境用maven.compiler.release一行屬性就能搞定多 JDK 共存、需要嚴(yán)格隔離的場景上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 里只負(fù)責(zé)執(zhí)行字節(jié)碼Maven本身是一個 Java 程序它自己也是跑在某個 JVM 上的。這就帶來了一個非常關(guān)鍵的認(rèn)知你機器上的 JDK 至少扮演了兩個角色——跑 Maven 的那個 JDK和編譯你代碼的那個 JDK。默認(rèn)情況下它們是同一個因為 Maven 會拿自己所在 JVM 下面的javac去編譯。但這兩者是可以被分開的工具鏈機制干的就是這件事。理解了這一點后面很多為什么我改了配置還是不生效的困惑就迎刃而解了。還有一個容易被忽略的第三方角色IDE 自帶的編譯器。IntelliJ IDEA 默認(rèn)不一定用 Maven 去構(gòu)建它有一套自己的增量編譯器和字節(jié)碼目標(biāo)版本設(shè)置這套設(shè)置和 pom 里的配置完全是兩個獨立的世界。這就是為什么經(jīng)常出現(xiàn)命令行編譯報錯、IDEA 里點運行卻沒事或者反過來的詭異現(xiàn)象。1.2 版本錯配的三種典型癥狀版本沒對齊報錯是分階段的認(rèn)準(zhǔn)報錯出現(xiàn)的時機能省掉一大半排查時間。第一種是編譯期就掛。最常見的是invalid target release: 17意思是你讓我產(chǎn)出 17 版本的字節(jié)碼但我手里這個javac根本不認(rèn)識 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)用一堆插件其中負(fù)責(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ù)。很多人只做了后半件事然后奇怪為什么換臺機器就崩了因為前半件事他沒管默認(rèn)跟著環(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本身不會重新編譯代碼所以嚴(yán)格來說它不決定字節(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)限判斷容易懵。這里有個細(xì)節(jié)值得單獨說插件版本一定要顯式聲明。不寫版本時 Maven 會用一套內(nèi)置的默認(rèn)版本這套默認(rèn)版本跟著 Maven 的版本走不同 Maven 版本可能綁定不同的插件版本行為就會有細(xì)微差異。我見過一次構(gòu)建結(jié)果不一致最后查出來就是兩臺機器的 Maven 版本不同導(dǎo)致maven-compiler-plugin版本不同一個默認(rèn)走source/target一個走了別的分支。聲明版本這件事成本幾乎為零收益是構(gòu)建可復(fù)現(xiàn)。3.2 source、target、release 三個開關(guān)怎么選這三個參數(shù)是本節(jié)的核心我用一張表把它們擺清楚參數(shù)作用層次是否校驗 API推薦度說明source語法層面否單用不推薦限制能用哪些語言特性比如 lambda、var、switch 表達(dá)式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來近似達(dá)到同樣的效果麻煩不少。另外補一句 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。工具鏈的配置文件默認(rèn)放在用戶目錄下的.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)建直接失敗而且報錯信息往往不夠直白。所以我認(rèn)為工具鏈方案在團隊協(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唯一我認(rèn)可的用途是調(diào)試編譯器本身的行為比如你想看看javac到底收到了什么參數(shù)可以在compilerArgs里加-verbose通過fork讓輸出獨立出來看得更清楚。這種一次性的排查用完就刪不要留在 pom 里。6. 驗證怎么確認(rèn)產(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它會列出所有依賴的包和模塊能暴露出一些意料之外的引用。更嚴(yán)格的做法是在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不認(rèn)識這個 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 升上去。這里有個細(xì)節(jié)很多同學(xué)升級了JAVA_HOME但容器鏡像沒換或者反過來鏡像換了本地沒換導(dǎo)致我明明升級了啊的錯覺。排查時請同時確認(rèn)三處本地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 這兩處。它們默認(rèn)跟著 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 版本漂移問題間接保證了插件默認(rèn)版本的一致性。至于 JDKWrapper 目前不負(fù)責(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ǔ)鏡像默認(rèn)裝了最新的 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
返回資訊列表
人人妻天天做天天爽| 五月天激情四射| 天天草AV| 欧美亚州综合图片| Av色五月| 日韩啪啪啪啪啪| 中国AAAAAA黄色片| 久久黄黄黄| 色香在线| 超碰97在线 欧美 国产| 色色激情五月天| 伦伦成年午夜免费视频| 6080YYY午夜理论片在线观看| 激情小说激情视频| 亚洲 欧美 日本 国内 首页| 国产熟女自拍| 久久大精品乱码视频人妻熟女| 亚洲色综合| 色在线亚洲视频www| 麻豆91熟妇人妻中文字幕茄子| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 欧美日韩免费专区在线| 人人看人人爰人人操| 人妻夜夜爽天天爽三区麻豆AV网站| 精品一区二区三区蜜桃臀www| 中文字幕精品一区二区精品| 色播五月丁香| 神马福利久草| 日韩99999色| 五月天综合在线| www.av在线观看| 国产 热久久久久国产精品| 亚洲日韩国产精品| 青娱乐淫乱1314| 亚洲激情久久久伊人综合| 欧美性五月| 久久草视频污视频| 啊啊啊啊,啊啊好多水| 日韩无码AB| 精彩久久中文| 欧美色97| 日韩无码一区二区三区| 亚洲天堂男人天堂| 毛片久久| 很黄很色的视频在线观看| 国产丝袜美女在线一区| 亚洲成人一区二区精品| 九月婷婷| 综合网~91综合网| 91情色在线| 中文字幕丰满子伦无码专区在线视频最新| 手机午夜电影神马久久| 免费在线黄片视频| 丁香啪啪| 久久神马影院| 91丝袜| 婷婷久月| ,成人免费啪啪视频| 国产啊v在线免费播放| 国产精品欧美日韩久久| 国产 码在线成人网站| 色欧美天天| 91扒丝袜综合在线| 高潮9999外国| 黄片qw| 中国女人内射6XXXXX| 三级片网站在线播放| 长长久久曰曰夜夜成人网| 中文字幕老熟妇黄色视频| 国产美女91视频| 97超碰免费生活| 欧美精品庄| 亚州熟女乱伦| 91久久久久久| 欧美 日韩 另类 亚洲| 少妇贴图| 久久综合国产精品国产| 亚洲限制级在线| 久啪| 91丨人妻丨国产丨丝袜| 国产精品免费美女视频| 欧美最婬乱婬爆婬性视频| 日本孕妇孕交| 天天综合网日韩7799| 思思热在线| 色天使大香蕉| 18啪啪手机免费性爱| 亚洲一区二区三区AV无码| 欧美日韩999| 日韩av女优在线免费一区| 亚洲欧美综合网站| 亚洲日韩XXX| 亚州综合AⅤ| 高清无码91| 91痴汉| 欧美熟妇精品黑人巨大91| 青青在线视频免费| 91黑丝美女| 人妻91少妇| 93人人操人人| 91天天爱| 波多野结衣一级视频| 国产又粗又又黄又猛| 人人噜夜夜操| 人妻偷拍一区二区三区| 亚洲少妇色| 天天爱综合网| 国产精品宅男免费| 日日干夜夜欢| 国产高潮AA片免费看| 婷婷久草| 国产激情综合五月久久| 91N综合网| 欧美日韩在线国产在线| 九九九九日本| 内射小黄片| 日本有码久久| 神马麻豆福利院| 99久久e免费热视| 青青草成人视频在线观看二区 | 亚洲精品97| 超碰国产在线| 国产v亚洲v日韩v欧美v片另类| 成片免费观看视频大全| 91精品国| 成人 日韩欧美一区| 青青久草| 熟女人妻av在线资源,黄色的资源| 国产后入式在线观看| 久久‘黄片视频| 东京热伊久| 久久久成人国产精品无码| 97干综合网| 天天色综亚洲91污| 精品国产三级av韩国在线| 97视频网站在线观看| 97超碰人人模人人拍人人| 亚洲日本韩国极品一区二区| 亚洲欧美另类小说| 精品97精品97| 亚洲中文一区二区三区| 抽插一区二区视频| 美女露胸露屁股| 中文字幕AV乱伦| 久久超碰98| 不卡免费av在线播放| 加勒比久久av| 小草三级久久观看| 三级特黄60分钟播放| 亚洲成人色情五月天丁香花| 日本99久久| 精品国产乱码久久久久久蜜臀| 久久麻豆一区二区| 波多野结衣被操50分钟免费视频| 久久视频,这里只有精品| 无码 有码 国产18p| 人人操人人操人妻人| 久久久久久久极品香蕉视频| 人人摸人人添人人操| 国产97色在线 | 亚洲| 日本超碰在线国产一区| JIZZJIZZ国产精品喷水| 人人干人人操人人爱| 久久9精品网站| 人人操AV| 精品一区二区亚洲国产| 久久透逼视频| 友优传媒精品在线一区二区| 亚洲天堂日本| 美女淫穴| 3571色综合一区二区二区| 黄色电影在线播放综合网站| 草草草草视频| 男人天堂网手机版婷婷| 97综合国产精品高潮久久| 全球成人中文在线| 亚洲第一免费视频| 一级一性爱免费视频| 99色在线| 久草精品视频| 日夜干射色啊| 青青草久久一区网| 精品一国2| 大香蕉97久久| 九月色婷婷| 亚洲制服欧美另类内射| 亚洲小电影免费涩涩成人在线高清| 欧美日综合| 欧美大干日韩| 99热99re6国产在线播放| 免费看美国人人爽,人人操| 在线无码操| 飘花国产午夜精品不卡| 亚州熟女乱伦| 中日韩一区二区三区欧美| 怡红院成人视频| 18禁久久| 青青草中出视频 | 日韩欧美亚洲自拍偷拍| 七月婷婷综合| 欧美99999| 91网站18禁| 欧美九九九| 91中文字幕在线观看| 国产麻豆一区二三区| 亚洲综合性网址| 伊人青青草久久| 亚洲色图20p| 九九精品美女高溯喷水| 日韩精品人妻系列无码天堂| 五月天伊人| 九九热超碰97亚洲最新香蕉| 综合欧美日韩在线| 亚洲影视第一页| 激情另类激情| 欧美乱伦专区| 无码高清少妇久久| 日韩精品免费高清视频在线| 亚洲Av无码成人精品国产| 超碰人人超在线观看| 久久 国产精品 一区| 干婷婷综合网| 中文字幕 码 自拍 视频 区| 嗯嗯啊好大| 日本中文字幕一区| 狠日欧美| 91成人在线免费视频| 欧美久久伊人| 亚州精品一区二区三区香中文字幕在线| 97舔舔| 伦在线97| 亚洲天天综合| 综合影视国产无码| 亚洲人妻一区二区三区| 97色涩| 久9久9久9久9久9久9| 综合色欧美| 国产成人亚洲精品无码最新在线| 东北丰满熟女国产一区| 天天干,夜夜爽| 天天摸天天插天天日| 加勒比综合九九99视频在线播放| 欧洲精品久久| 男人的天堂 在线一区| 国产色综合亚洲色综合吹潮| 1区2区3区在线视频| 久草精品一区| 一级乱伦网站| 操操碰| 欧美性爱一区二区三区四区 | 日韩av免费一级电影| 日韩激情啪啪| 91网18| 欧美伦乱| 亚洲av综合色区图片亚洲| 综合网色| 天天影视综合色| 亚洲精品免费中文字幕| 欧美在线视频99| 91成人在线| 欧美综合天堂| 国产亚洲日本精品在线| 中文字幕女同在线| 欧美一区二区三区入口| 久久9 9 9精品| 麻豆黄站| AV不卡在线| 欧洲中文字幕| 超碰97丝袜| 亚洲国产一区二区三区四区国产| 白 大 人妻 区 在线| 超碰免费人妻在线| 综合久久99| 国产乱不卡| 亚洲精品国产熟女久久久久久| 婷婷五月花| 热热色国产一二区AV| 99久国产精品午夜性色福利| 久久久久久久久久久六六| 国产91丝袜在线播放蜜月| 日本成熟少妇A∨网站| 九九亚洲视频| 天天干夜夜操一区二区| 玖玖玖玖精品国产剧情| 中文字幕伊人| 啪啪啪大香蕉| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 少妇一区二区三区高速| 青青草自拍视频在线播放| 黄站在线免费观看| 久久一级无码精品毛片6| 久久、1234| 欧美一区二区三区四区综合| 久久久久网站-538在线视频-欧美永久乱码| 麻豆尤物视频网| 黑人精品成人一区二区三区| 亚洲中文丝袜美腿诱惑字幕| 天天干天天拍| 青青草好吊色| 天天干一区二区| 国产女同在线观看视频| 91久久午夜无码鲁丝片久久人妻| 操逼无码操逼| 久久综合女优| 免费在线观看AV无码网站| 亚洲精品国产熟女久久久| 啊视频在线| 欧美另类丝袜熟女| 色性荡荡荡荡视频| 日本欧美韩国国产在线| 久9爱经典视频| 日本日逼视频网| 亚洲综合首页| 久久久不卡区一区二区三区久久久| 一二三四视频中文字幕在线看| 天天干人妻| 国产伦精品一区二区三区在线观| 久久这里只有精品9| 婷婷综合在线观看| 欧美一区二区观看在线| 青青在线视频免费| 久久超碰大香蕉| 亚洲午夜福利视频| 最新亚洲黄色免费电影| 日本九九久久99| 国产亚洲综合欧美一区| 久久久久亚洲熟妇熟女| 密臀国产在线| AV在线资源| 亚欧性爱在线无码| 强奸抽插av| 国产高清在线自在拍69| 在线啊啊啊啊| 韩国黄片aaaa| 97无码视频在线播放| 五十路人妻在线| 人妻激情偷乱视频一区二区三区| 天天摸夜夜添无码小视频| 校园春色 亚洲| 色婷婷综合久久中文字幕雪峰| 久久亚洲AV成人精品无码| 亚洲美女精品九九视频| 欧美色图在线视频少妇| 久久久影院| 99爱爱| 啪啪免费| 操逼视频国产无套| 精品国产一区探花在线观看| 91精品导航| 夜草欧美| 东北女人| 91丝袜美腿网站| 狼人久草| 深夜激情无码| 色呦呦呦在线观看视频| 涩涩这里只有精品视频| 国产绿奴视频在线观看| 国产又黄又爽| 久久久夜夜夜| 久久国产乱子伦精品免费女,网站| 天天躁狠狠躁av| 日韩成人午夜精品久久高潮| 偷拍亚洲高清图片| 天天弄欧美| 美女露胸露屁股| 丁香六月婷婷| 天天综合网一91网| 九九在线视频| 婷婷爱五月| 色婷亚洲五月在线观看| 天堂8在线新版官网| 国产成人午夜视频网址| 国产高清免费不卡av| 91大神精品长腿在线观看网站| 成年人黄色| 超碰九7| 色97干| 亚洲激情视频| 在线免费观看高清无码视频| 另类亚洲一区二区三区| 人人干黄色| 午夜乱轮操逼视频免费看| 粉嫩av平台| 欧美人与动性人交a| 日本成人在线不卡一区二区三区 | **一级毛片国产| 欧美很很操视频| 九月婷婷综合| 69精品在线| 白丝1区2区3区| 偷窥自拍亚洲色图| 色婷婷久久综合超碰| 亚洲综合射| 国产吹潮女在线观看| 99国内熟女露脸视频| 亚洲青青草| 亚洲中文字幕av| 美女91AV| 欧美日日操| 看一级特黄a大一片| 日韩一区二区三区四区五区| 激情综合五月婷婷| 操我啊啊啊啊啊| 伊人久久大香线综合无码| 日韩天天本| 久久久亚洲精品中文字幕人妻| 亚洲三级。日韩三级| 翔田千里A片一区二区| 天堂俺去俺来也www久久婷婷| 高清无码 国产精品| 综合久久中文字幕综合日韩精品 | 黄片www视频免费| 26uuu国产亚洲综合| 黄色视频特级毛片| 亚殴在线| 极品出轨视频网站| 中字幕人妻一区二区三区| 大香网站| 精品无吗久久| 色原狠狠天天天| 9色国产精品一区粉嫩| 伊人激情五月天一区二区| 亚洲无码色| 黄色十八禁网站| 一区二区三区四区在线不卡| 丁香色狠狠色综合久久小说| 国产精品宅男免费| 日本人妻一区二区| 亚州黄站| 黄在线| 骚乳在线| 97天天摸天天爽| 国产精品女久久久久av爽| 久久精品国产精品亚洲艾通辽熟妇| 天天碰操中国年青熟妇| 水滴偷拍| 四虎影院成年人片| 99re99视频在线免费观看| 精品人妻一区二区三区视频在线| 日本不卡高清视频| 超碰1024久久| 青娱乐国产剧情av一区| 激情五月综合网| 日韩中文9| 欧美日韩国产另类综合| 2025亚洲男人天堂| 丰满人妻一区二区三区色-百度| 人人看人人摸人人色| 亚洲精品 超碰| 久久精品—区二区三区内射| 婷婷五月激情综合| 公司1区2区3区精产精| 精品久久久高清无码| 精品久久久久瑟瑟| 另类图片综合| 色嘟嘟人妻天堂网| 97香蕉网| 视频在线观看一二三区| 1240青青草一区二区三区视频天爱| 在线国产一区二区av| 99精品丰满人妻| 日熟女| 日韩少妇丰满亚洲| 国产精品亚洲无码| 97频视在线| 岛国黄色短视频| 亚洲天堂日本| 无码少妇精品一区二区60岁老人| 97超碰影音| 欧美黄片视频在线观看免费| 中出20p| 久热无码| 2019天天干| 超AV色女| 久久天天艹| 日韩欧美偷拍美女视频| 黄色小视频日本txt| 色哟哟精品1精品2| 五月天色五月| 翔田千里A片一区二区| 九一亚洲国产免费| 亚洲另类小说卡通动漫| 亚洲啪啪啪啪视香蕉| 乱伦系列一区二区| 一二三区精品视频| 青青草视频久久久久| 日韩在线一区高清在线| 欧美性91| 日韩女优中文字幕| 欧美碰碰综合色| 日本成人电影资源网| 91激情综合| 自慰白浆在线观看| 易易A毛视频| 97爱免费插| 中文字幕日韩专区精品系列| 91少妇香蕉久久精品| 小情侣高清国产在线视频| 国产成人精品网站| 久久、1234| 亚洲国产高清福利视频| 97资源亚洲| 开心六月色| 天天做日日爱夜夜爽| 天天爱天天操| 欧美在线视频播放| 99久久久无码| 国产操逼逼网| 加勒比综合网| 亚洲AV不卡在线观看| 99超碰色| 国产视频一区二区免费| 九九九精品成人免费视频小说| 欧美综合网1| 2010男人的天堂| 欧美性生活免费网| 69一区二区三区| 夜夜骑操视频| 亚洲 图片 欧美 色图| 黄网色一区二区三区四区精品| 国语av最新自产拍在线观看| 天天综合-91入口| 日韩一级二级三级免费看完整版国语版| 狠狠色婷婷7777久| 日韩操逼HD| 亚洲色图一区二区三区| 91劲爆| 97色爱| 丝袜美腿诱惑亚洲欧美视频在线观看| 熟女乱伦A| 天天色图| 青青草久草| 亚洲中字慕不卡| 97色涩| 亚洲情色一区三区| 人人喜人人妻| 一二三区在线| 激情五月综合网| 国产亚州精品美女久久久免费| 另类图片欧美激情综合| 俄罗斯及免费在线看| 国产91丝袜 在线播放| 在线 欧美 亚洲| 精品国产久久乱码| 99久久9| 久久久久密臀视频| 日韩精品作爱导航| 久久99精品九九久久久婷婷| 中文字幕-区二区三区四区视频中国| 91色情黑丝搞鸡在线观看一区二区三区三州 | 国产精品自产拍在线观看社区| 久久9精品| 97在线播放 | 综合国产影视三级| 乱操乱伦AV| 成全动漫视频观看免费下载| 狠狠操,使劲操| 国产精品人妻免费精品| 国产精品成人AV片免费看网站| 久久人| 成人久久久| 蜜臀一区二区三区在线| 思思热在线视频在线| 国产精品不卡av免费在线观看| 久久男人的天堂| 十八禁啪啪视频| 91伊人久| 久久久久久国产手机AV| 爱我干综合| 日韩精品一二三四| 国产a级精品| 熟女一区二区三区| 啊啊啊啊,啊啊好多水| 一区二区三区一亚洲中文字幕、综合区灬 | 免费啪啪一级视频| 日韩激情中文字幕有码| 99婷婷| 精品久一区免费| 北京美女一区二区| 亚洲性综合11| 日本视频在线中文字幕| 国产黄色在线播放观看| 婷婷视频在线免费观看| 五月丁香综合激情| 刺激性视频黄页| 91色伦综合| 欧美自拍网| 999久久久免费精品国产牛牛| 一级毛片久久久久久久女人18| 操逼逼中文字幕| 五月婷视频| 麻豆性爱视频在线播放| 中文字幕无码不卡啪啪| 久操精品| WWW黄片COM| 96久久科窝| 99re在线视频| 粉嫩av在线| 黄色网址在线免费观看| 高凊专区人人操| 久久久精品中文字幕麻豆| 啊啊啊啊好疼| 午夜福利av电影在线| www.色婷婷| 亚洲国产精品久久久男人的天堂| 亚洲人妻五月丁香婷婷| 天天干干天天干干| 人人乐大香蕉| 日本免费二区三区| 大黄片做爱的大的| 亚洲免费精品一区| 超碰色图| 干婷婷综合网| 男人天堂综合| 亚洲无线观看久久| 另类小说五月天| 校园春色宗合网| 9色国产精品一区粉嫩| 色五月大香蕉| 日韩av情韩国爱禁区av一区二区| 日韩精品资源专区二区| 人妻AV 中文字幕的| 亚洲国产中文字幕| 岛国激情视频在线观看| 人妻在线臀日韩| 精品人妻丰满熟妇一区二区三| 久久成人国产| 欧美日韩婷婷中文| 国产精品嫩草影院午夜两性 | 欧美骚少妇| 91深夜夜| 一区二区三区无卡视频在线观看| 精品视频在线观看精品| 亚州伊人色综台| 男人的天堂视频精品乱在线| av一区二区三区 中文| 好爽免费视频,| 99精品欧美一区二区三区桃色| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 亚州欧美一区| 久久美女国产| 上床不卡网站| 中文字幕,人妻,日韩| 亚洲中文字幕乱码无码一区二区| 亚洲色图欧美一区二区不卡| 91亚州日韩高清| 精品视频一二三中文| 激情五月天综合网| 91综合熟女| 久久精品人体| 日韩特级毛片免费观看全集| 91色五月俺来也| 青娱乐老司机视频| 国精综合一二三区影视| 欧美精品99久久久**| 91丝袜在线视频| japan日本高清乱xxxx| 丝袜色综合| 丁香五月天堂| 精品无码久久久久久久久果冻糖心| 色蜜AV| 黄色免费网| 粉嫩AV一区夜夜嗨| 在线观看日韩av不卡| 日本欧美不卡| 亚洲色欲一区二区三区| 中文字幕奈奈美被公侵犯| 亚洲AV秘 精品久久老牛影视| 国产女主播视频在线观看| 一级免费啪啪片| 9丨久久九九九 | 欧美性爱91| 精品国产乱码久久久久久日本公司| www色色com| 欧洲久久一二线| 久操在97| 99热成人| 国产日韩在线播放av| 99精品无码| 国产精品九9| 欧美性爱1080p| 欧美92| 大香蕉啪啪啪啪在线| 操美女高潮抽搐白浆| 一起草高清无码| 97精品中文字幕| 东京热激情视频一二三区| 亚洲,日韩,欧美,成人播放 | 色婷婷激情| 日本十八禁免费看污网站| 99在线精品观看视频中文| 99re6国产精品99re在线| 久久九九视频九九视频| 天天做天天爱| 色香欲天天天天综合色| 天天干2区3区| 中字乱伦AV| 久久伊人亚洲AV无码网站| 欧美性第1页| 中文字幕人妻色偷偷久久皮| 蜜乳av首页| 午夜一级免费毛片| 白嫩少妇| 九九九九一级| 爆乳免费黄网站| 亚洲成av人片色午夜乱码| 国产中文字幕在线点播| 亚洲视频精选| 亚州精品人妻一二三区| 欧美aⅴ99久久黑人专区| 啊啊啊啊嗯嗯嗯用力好爽 | 亚洲第一页欧美| 人妻少妇精品一区二区三区| 亚洲一本大道中文字幕无码在线| 国产一区二区免费福利片| 久久久不卡| 超碰偷拍| 懂色av中文字幕一区二区三区天美| 亚洲AV乱码专区国产噜噜亚洲| 女人高潮大叫一级毛片| 囯产操逼片| 国产一区二区a毛片| 9国产超碰| 永久电影三级在线观看| 加勒比综合| 78操B| 超碰4A| 欧美第五页| 超碰在线1234区| 日韩中文字幕宗合在线| 蜜桃久久久久久久久久久久| 中文字幕少妇色 | 20cm女自慰在线日韩欧美| 嗯嗯啊好爽| 高清视频一区| 9丨久久九九九| 蜜臀99久| 伊人加勒比| 久操电影| 精品国模无码| www.99色| 亚洲一区二区三区不卡国产欧美| 嫩呦国产一区二区三区AV| A级毛片在线看免费| 涩综合导航| 亚洲精品国产熟女| 99热99在线播放激情| 欧美日产国产在线成人第一区| 伊人久久综合影院精品久久久| 欧美日本成人一区二区| 亚洲精品自拍| 久久久久亚洲av综合波多野制衣| 国产av波波国产精品| 国模不卡| 丁香五月天堂| 超碰97欧美在线| 嗯嗯嗯不要不要免费视频| 精彩国产视频播放1区2区| 99国产精品免费| 天天情欲宗合网| 97视频播放| 9色国产精品一区粉嫩| 家庭乱伦国产| 岛国成人av在线播放网址| 首页亚洲国产高跟丝袜诱惑视频 | 97欧美在线| 国产精品久久天天干| 成人七区| 天天日天天插| 好看的91视频| 中文字幕免费在线观看| 97超碰超碰| 免费一级黄色录像影片| 色99视频| 欧美人妻色| avav青青草久久夜| 91福利网在线观看| 国产精品视频白浆免费| 日韩免费人妻色情网站| 婷婷另类小说| 久久久久99精品成人片蜜臀| 欧美熟妇成人一区二区| 人看人人摸人人操| 精品久久99| 日韩成人人妻网站| 日韩欧美福利视频看看| 5278欧美一区二区三区| 综合国产97| 熟女久久久| 欧美高清18A片| 性色av婷婷久久一区二区点复制| 婷婷色在线| 伊人色综合超碰| 干美女人妻| 在线综合 亚洲 欧美中文字幕| 亚洲欧洲综合视频在线| 欧美人妻精品| 无码操逼天堂| 亚洲国产一级黄色视频| 成人av动漫在线观看| 精品人妻一区二区免费蜜桃| 精品人妻一区二区三区免费视频| 国产一级内射无挡观看| 人妻久热在线| 日韩一级二级三级| 亚洲操逼视频网站| 久久蜜色情在线视频xxx免费观看| 国产精品久久久亚洲第一牛牛_在线观看 | 精品国产乱子伦一区二区三区,精品一| 日韩av在线精品观看| 六月激情婷婷| 青青草一区二区三区四| 一个国产在线综合网站| 一区二区三区 丝袜 高跟 美腿| 91痴汉| 久久人人舔人人爽舔人人av片| 一区二区三区国产精产| 超碰人妻久久| 热九九精品| asc国产精品| 亚洲 一区二区 自拍| 日韩激情视频| 久久无码一区二区二三区性色| 欧美日韩色图片| 97碰久久| 92福利社视频| 校园春色 欧美| 后X久久| 97香蕉网| 丰满少妇一区二区三区四区观看| 91另类| 日本天天吊| 一起草高清无码| 国产青一二三| 2017av无码免费无线播| 日本天天人人狠狠在线日美女 | 秋霞影音一区二区三区| 少妇色综合| 成年人性爱日韩| 日韩黄色小说| 日韩中文字幕二区| 伊人九九九| 香蕉在线一区二区三区| 激情小说在线视频| 啊啊啊好湿久久| 成人av影院在线观看| 亚洲视频二区| 自拍偷拍2025在线观看| 国产午夜精品一区二区三区牛牛| 久热超碰| 国产毛片片精品天天看视频 | 亚洲欧美综合区自拍另类| 嗯嗯啊啊好大好爽| 久久这里只精品99re66图| 91亚洲网站| 九九九九九九九九九九九免费国产| 乱性AV| 爱妻综合网| 成人丁香五月| a片久久久久久久久久久久 | 亚洲日韩肥臀视频在线观看| 国产精品无码成人精品| 麻豆天美在线喷水AV| 亚洲图片欧美在线视频| 蜜臀99久久| 91老熟女老女人国产老太| 伊人久久大香大香线蕉中文 | 五月婷婷色| 欧美的性爱网站免费| 超碰到97情色| 超碰 97国产熟女| 国产福利在线视频网站| 麻豆AV一区二区天美传媒| 日韩一区二区熟女| 国产乱码精品一区二区三区四川| 蜜臀久久99精品久久久久久-DVD| 91亚洲欧美色图| 999岛国大片| 午夜啪| 天美av在线| 久久亚州高清| 超碰久热| av天堂天堂av日韩| 久久 精品| 亚洲日韩欧美一区二区| 91neishe| 久久东京国产精品视频| 日韩成人精品| 欧美国产婷婷久久| 欧洲亚洲人人爽爽视频| 欧美一区二区在线资源| 久99热| 在线一道啪| 精品欧美老熟女一二区| 91精品91久久久久77777| 操人妻逼91| 志村玲子视频一区二区| 天堂中文资源在线bt| 内射夫妻三片| 中文字幕乱码在线| 欧美丰满少妇交换91欧美精品| 少妇69中文| 黑操B| 色五月婷婷色| 亚洲1区2区三区高清中文字幕| 超碰78| 99re视频这里只有精品| 狠狠爱夜夜干| 330dv亚洲成年视频网| caopeng97| 亚洲色色色| 天天躁日日躁AAAXX| 色哟哟511老熟女| 国产美女裸体秘 永久无遮挡| 亚洲开心网| 亚洲色图A| 日本布卡一区二三区| 劲爆欧美人妖三区91| 97精品第3页| 熟女自慰久久久| 久久久久久久少妇| 中文啪啪视频| 97资源制服丝袜| 久热9| 91色婷婷综合久久中文字幕二区| 国产亚洲日韩在线三区黑人| 国产精品 视频| 精品日日人妻| 极品少妇久久久| 91国产丝袜白虎| 97爱爱官网| 欧美日韩中文字幕不卡| 正宗无毛一线天嫩逼| 亚洲脚交| 亚洲色婷婷综合久久久久中文| 久久风骚城市| 殴美色网| 亚洲一区二区AV| 好爽免费视频| 男人的天堂网页| 久久产精品一区二区三区电影| 久久午夜色播影院免费高清| 五月丁香激情四射| 国内精品嫩模A∨私拍小视频| 人人弄人人摸| 天天弄天天操| 亚洲第一成人影院色播| 丁香婷婷啪啪| 青青网三级视频| 成年男人的天堂| 亚欧中文字幕在线视频| 狠狠2050在线观看| 国产自偷| 野狼福利社区| 国产日韩精品suv| 综合久久久久久久综合网| 亚洲一区二区三区AV无码| 国产成人精品日本亚洲语言| 香蕉久久国产AV一区二区| 丁香五月影院| 久久最新免费视频23| 你草精品在线视频| 美国三级日本三级久久99| 欧美伊人电影| 亚洲中字幕日本一区二区三区| 免费日韩黄片| 蜜乳av首页| 啊啊啊好湿国产一二| 青青草字幕AV| 美女黄站| 97在线观看播放视频| 亚洲天堂99| 蜜臀亚洲中文| 精品欧美日韩在线观看| 夜夜嗨视频| 国产区91柔拿会所技师| 欧美国产日韩清纯唯美| 精品亚洲俞拍视频一区| 色天天野狼综合社区| 国产精品爆乳懂色蜜乳| 亚洲αv一区二区三区| 亚洲黑丝在线| 青青欧美| 在线视频97| 久久一区二区三区入口| 夜夜操天天肏| 久操免费电影| 亚洲欧洲综合成人av一区| 任你草| 亚洲国产丝袜在线观看| 日本一二区不卡| 熟女色综合久久| 欧美亚洲20p| 男女啊啊啊啊啊| 乱伦1色页| 亚洲有码 视频一区| 青青草成人视频在线观看二区| 欧美日综合| 亚洲熟女性高潮久久久| 999日韩中文精品观看视频。| AV色五月天| 日本1区2区不卡视频| 蜜臀少妇一区二区| 夫妻AV网站| 色网在线视频观看免费| 伊人影院在线理论播放 | 美女黄色一级A视频| 欧洲大香蕉| 精品国产一区二区三区在线播出| 黄污污污污| 校园春色美腿丝袜 | 午夜男人av| 天天碰操中国年青熟妇| 亚州综合网| 九九在线视频| 全国男人天堂网| 亚洲av无线观看| 亚洲综合射| 久久青青草原免费视频| 亚洲综合网图| 一区不卡在线观看av| 亚洲国产剧情少妇激情| 9久久精品| 天天综合网站| 青青草这里只有精品| 日韩精品视频在线观看一卡二卡| 综合91网| 欧美经典一区二区三区| 超碰这里只有精品| 飘花国产午夜精品不卡| 色女99一级片在线观看| av激情亚洲五月天| 九九视品黄色| 成人羞羞视频国产| 丝袜制服字幕在线| 欧美精品成人一区二区在线观看| 天天91~综合入口| 色欧美亚洲| 国产伦精品免编号公布| 日本一道在线播放高清| 九九久久久九九| 午夜美女福利视频| 男人的天堂激情| 国产精品久久aV| 亚洲熟女乱熟乱熟妇综合网二区| 亚洲码在线中文在线观看| 97资源欧美| 美国一区二区三区视频| 久九9精品| 免费久久精品麻豆一区二区av| 青青青草原| 99精彩视频| 放黄片放3级黄片没穿衣服| 日本午夜福利视频| 不卡av在线中文字幕| 久久夜精品一区二区三区| 黄色小视频日本txt| 午夜亚洲| 欧美亚洲激情小说| 家庭乱伦国产| 久久久久久中文| 人人天天欧洲| 国产成人精品必看 | 男人a天堂手机在线版| 99热线麻豆 | 老鸭窝成人| 综合色图区| 豆花视频操逼网址| 99蜜月精品久久| 女人爽到高潮久久久| 黄色操人| 大香蕉性欧美| 夜夜操91744565| 国模无码一区二区三区在线| 亚洲精品欧洲色| 亚洲大色堂| 五月天色图| 十八禁视频一区二区| 熟妇一区,二区,三区。| 嗯啊啊啊轻点视频 | 8050午夜少妇无码| 东北毛片| 加勒比性爱成人在线| 国产欧美精品日韩区二区麻豆天美| 色就色综合| 2020中文字幕在线观看| 高潮综合网| 欧洲天天在线| 亚洲欧美日韩精品久久久一区二区| 男人天堂2030| 无码操逼天堂| 亚洲AV免费在线观看| 九九综合久久| 99久国产精品午夜性色福利| 五月天婷婷社区| 天天干人妻| 亚洲男人的天堂一区二区| 搡老熟女老女人老熟妇免费视频| 日本人妻丰满熟妇久久久久久| 日本在线15p| 成人熟女区| 丁香五月天婷婷姐| 国产超碰人人操| www.99中文字幕| 国产在线综合福利网站| 四虎av在线| 最新9久久久9免费视频| 91欧美长吊| 日本人体九九九九九九| 欧美精品自慰系列寂寞少妇| 日韩无码操逼片| 天美传媒婬乱| 加勒比综合88| 伊人久大| 久久久九精品| 性色av一区二区| 日韩一区二区熟女| 亚洲有码 视频一区| 大香网伊人久久综合| 国产区性爱在线视频秋霞豆| 国产黄色影片在线观看| 一级性爱视频免费观看| 国产传媒日韩| 亚洲日韩电影| 欧美高清色| 9久久久久久| 久啪视频| 另类图片五月天| 亚洲亚洲亚洲天堂天堂| 欧美综合 站| 欧美大色交| 欧美一区二区三区成人性生活| 麻豆 亚洲 97| 狠狠2050在线观看| 久草在| 国产第11页| 91精品免费| 97伦乱| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 国产精品乱码久久久久| 人人操人人摸人人看人人干| 日B操| 国产精品久久久啊| 欧美亚洲| 97无码视频在线播放| 国内偷拍精品一区二区| 国产亚洲色停停久久99精品91| 国产91影院| .精品人妻一区二区三| 人人操我人人干| 91精品女厕偷拍视频| 日日操丁香五月天| 亚洲码专区| 伊人久久婷婷| 特污免视频| 成人老鸭窝人人在线视频| 啊啊啊在线观看免费视频| 久草男人天堂| 成人情色综合网| 九九九九九九九九九国产精品|