Gradle 4.x 升級 Gradle 5.x

2,129次閱讀
尚無留言

共计 2321 个字符,预计需要花费 6 分钟才能阅读完成。

最近開始複習以前自己寫過的老項目,不過就是 2018 年寫的項目,今天打開發現套件根本無法從網路上獲取,各種錯誤,填了好久的坑終於搞定,馬上筆記下來。

前前後後大概遇到的錯誤訊息如下

  • Failed to apply plugin [id ‘com.gradle.build-scan’]
  • Could not resolve all artifacts for configuration ‘:classpath’
  • Could not resolve all dependencies for configuration ‘:detachedConfiguration1’

這就很莫名其妙,始終沒有說明是需要升級 Gradle 但是套件就是無法從網路上獲取,最初以為是套件庫的問題,自己跑去架設 Nexus3 發現還是無解,還是無法正常獲取套件,然而我重新寫新項目又都正常,於是乎開始懷疑是 Gradle 版本問題。

直到我刪除 org.springframework.boot 相關依賴後重新 Gradle Build 出現下圖,確認是版本問題!

Gradle 4.x 升級 Gradle 5.x

參考這篇文章 Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0 才發現人家大部分用 Gradle 都是 Android 開發者搭配 Kotlin 才會遇到的坑,怎麼我寫 Spring boot 也會遇到各種套件依賴的坑,但新增項目又正常於是參考這篇文章開始升級項目的 Gradle 版本。

修改 gradle-wrapper.properties

找到項目底下 \gradle\wrapper 有個 gradle-wrapper.properties 記事本打開 修改如下,把 distributionUrl 改成最新的版本即可

#Sun Feb 24 10:09:15 CST 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip

然後回到 IntelliJ 項目中,刪除之前 .gradle 和 build 重新執行 Gradle Build 這時等待下載新版本,如果 build.gradle 配置沒錯應該就正常,但實際上會出現很多錯誤如下繼續填坑。

解決 build.gradle 錯誤

解決 Failed to apply plugin [id ‘com.gradle.build-scan’]

遇到這個錯誤的原因是 Gradle 版本太高,但 gradle build tool 版本過低導致不能編譯,詳細參考 官方網站

解決 Failed to apply plugin [id ‘net.ltgt.apt’]

* What went wrong:
A problem occurred evaluating root project ‘dinglog’.
> Failed to apply plugin [id ‘net.ltgt.apt’]
> org.gradle.api.internal.tasks.DefaultTaskInputFilePropertyRegistration cannot be cast to org.gradle.api.tasks.TaskInputs

net.ltgt.gradle:gradle-apt-plugin:0.13 直接升級 0.16 版本如下

buildscript {
    xxxxxx......
    dependencies {
        classpath 'org.springframework.boot:spring-boot-gradle-plugin:2.1.0.RELEASE'
        classpath "com.gradle:build-scan-plugin:2.3"
        classpath 'io.spring.gradle:dependency-management-plugin:1.0.6.RELEASE'
        classpath "net.ltgt.gradle:gradle-apt-plugin:0.16"
    }
}

這時應該可以正常執行項目,引用也都正常,如下提示

> Configure project :
The apt configuration has been deprecated. Please use the annotationProcessor configuration instead.

CONFIGURE SUCCESSFUL in 15s

因為項目中使用 lombok 其中引用的方式如下

dependencies {
    xxxxx...
    compileOnly 'org.projectlombok:lombok:1.18.4'
    apt 'org.projectlombok:lombok:1.18.4'
}

建議改為下述,即可完成升級

dependencies {
    compileOnly 'org.projectlombok:lombok:1.18.4'
    annotationProcessor 'org.projectlombok:lombok:1.18.4'
    testCompileOnly 'org.projectlombok:lombok:1.18.4'
    testAnnotationProcessor 'org.projectlombok:lombok:1.18.4'
}

具體參考 Gradle 的依赖方式——Lombok 在 Gradle 中的正确配置姿势 以及關於 apt 這個依賴做什麼用的可以參考該 issue

正文完
 0
評論(尚無留言)

夜升筆談

夜升筆談
夜升筆談
視寫代碼為信仰,奉高效能為執著,成為大牛不是一蹴可幾,但只要秉持信念終究能成,我依舊在這條路上不斷前進。
最新评论
Yosheng Yosheng 我是买梯子了 只是理解一下原理而已
虚拟信用卡 虚拟信用卡 还是直接买梯子吧,太浪费时间了
spring spring 学习了
cskepper cskepper 非常有用,已经顺利解决
cskepper cskepper 非常有用,已经顺利解决
Yosheng Yosheng 這可能是代理服務器的問題了...
淑淑 淑淑 我在大陸使用了VPN 照著你說的操作 但是出現無法透過代理伺服器連線 我的電腦是W7 也下載了兼容版 用了大概一個星期後今天LINE就無法使用VPN了 這種要怎樣解決
Yosheng Yosheng 如果不能直接撥放建議直接下載回來播放,後面我就沒去折騰為什麼不能線上播放了
SADFISH SADFISH 我无法播放语音是为什么呀楼主
Yosheng Yosheng 微信号 yosheng0323