溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

IDEA中Gradle如何刪除多余無用依賴

發(fā)布時間:2022-03-31 14:43:35 來源:億速云 閱讀:927 作者:小新 欄目:開發(fā)技術

小編給大家分享一下IDEA中Gradle如何刪除多余無用依賴,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

    簡介

    項目中經過很久開發(fā),會有很多當初引入后來又不再使用的依賴,靠肉眼很難分辨刪除。

    這時候,我們可以使用分析無用依賴插件進行處理:gradle-lint-plugin

    如何使用

    注意: 他可能存在刪除錯誤的引用依賴,需要刪除后進行檢查和測試

    并且,這里僅支持單模塊項目,如果是多模塊項目請參考官方文檔進行處理

    官方文檔地址: https://github.com/nebula-plugins/gradle-lint-plugin/wiki

    1.引入插件

    在項目的 build.gradle 中引用該插件, 最新版本號可以 點擊這里查看:

    plugins {
      id 'nebula.lint' version '17.7.0'
    }

    如何你項目中本身已經有插件,則可以在后面追加,例如我的:

    plugins {
        id 'org.springframework.boot' version '2.3.5.RELEASE'
        id 'io.spring.dependency-management' version '1.0.10.RELEASE'
        id 'java'
        id 'nebula.lint' version '17.7.0'
    }

    2.應用插件

    build.gradle 應用 該插件,并在任意位置,配置檢測規(guī)則:

    apply plugin :"nebula.lint"
    gradleLint.rules=['unused-dependency']

    3.使用 Gradle 進行重新載入項目

    IDEA 使用 Gradle 進行重新載入項目,則會出現(xiàn) Lint 菜單, 如下圖所示:

    IDEA中Gradle如何刪除多余無用依賴

    4.生成報告

    點擊 lint -> generateGradleLintReport, 可以生成報告。

    報告僅保留不同類型的省略結果,可以看到有以下四種報告結果:

    • one or more classes are required by your code directly (no auto-fix available)

    • this dependency is unused and can be removed

    • this dependency should be removed since its artifact is empty (no auto-fix available)

    • this dependency is a service provider unused at compileClasspath time and can be moved to the runtimeOnly configuration (no auto-fix available)

    其中, this dependency is unused and can be removed 表示可以刪除的依賴。

    Executing 'generateGradleLintReport'...
    > Task :generateGradleLintReport
    Generated a report containing information about 83 lint violations in this project
    > Task :autoLintGradle
    This project contains lint violations. A complete listing of the violations follows. 
    Because none were serious, the build's overall status was unaffected.
    warning   unused-dependency                  one or more classes in org.mockito:mockito-core:3.3.3 are required by your code directly (no auto-fix available)
    warning   unused-dependency                  this dependency should be removed since its artifact is empty (no auto-fix available)
    build.gradle:59
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    warning   unused-dependency                  this dependency is a service provider unused at compileClasspath time and can be moved to the runtimeOnly configuration (no auto-fix available)
    build.gradle:69
    compileOnly 'org.projectlombok:lombok'
    warning   unused-dependency                  this dependency is unused and can be removed
    build.gradle:101
    compile group: 'ch.qos.logback', name: 'logback-core', version: '1.2.3'
    ? 83 problems (0 errors, 83 warnings)
    To apply fixes automatically, run fixGradleLint, review, and commit the changes.

    5. 刪除無用依賴

    我們可以看到報告的最后一句話,

    To apply fixes automatically, run fixGradleLint, review, and commit the changes.

    最后,可以執(zhí)行 fixGradleLint 自動刪除無用依賴。

    IDEA中Gradle如何刪除多余無用依賴

    修復報告如下,我們可以看到除了無用的依賴,還有一些其他的依賴也被刪除了,原因是因為,他認為我們可以直接引入其對應的依賴而不是整個依賴包。

    例如,compile group: 'com.baomidou', name: 'mybatis-plus-boot-starter', version: '3.3.1' 中我們只用了整個 starter 包的一部分依賴,可以僅依賴這一部分依賴,而不是整個 starter 包。這個也可以不按照他的推薦,直接手動選擇保留。

    Executing 'fixGradleLint'...
    > Task :compileJava
    > Task :processResources UP-TO-DATE
    > Task :classes
    > Task :compileTestJava
    > Task :fixGradleLint
    This project contains lint violations. A complete listing of my attempt to fix them follows. Please review and commit the changes.
    needs fixing   unused-dependency                  one or more classes in com.baomidou:mybatis-plus-core:3.3.1 are required by your code directly
    fixed          unused-dependency                  this dependency is unused and can be removed
    build.gradle:105
    compile 'org.ehcache:ehcache'
    build.gradle:106
    compile 'javax.cache:cache-api'
    build.gradle:107
    compile 'org.mybatis:mybatis-typehandlers-jsr310:1.0.2'
    build.gradle:112
    testImplementation 'org.springframework.security:spring-security-test'
    Corrected 17 lint problems

    特殊情況

    Lombok

    Lombok 是一個編譯時自動生成 Getter/Setter 和構造器的工具。

    Nebula Lint 依舊會檢測無用的依賴,日志如下:

    > Task :lintGradle FAILED
    This project contains lint violations. A complete listing of the violations follows. 
    Because none were serious, the build's overall status was unaffected.
    warning   unused-dependency                  this dependency is a service provider unused at compile time and can be moved to the runtime configuration

    處理方式(修改版本號):

    gradleLint.ignore('unused-dependency') {
    		compileOnly group: 'org.projectlombok', name: 'lombok', version:'1.16.20'
    	}

    看完了這篇文章,相信你對“IDEA中Gradle如何刪除多余無用依賴”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業(yè)資訊頻道,感謝各位的閱讀!

    向AI問一下細節(jié)

    免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

    AI