<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
專案中經過很久開發,會有很多當初引入後來又不再使用的依賴,靠肉眼很難分辨刪除。
這時候,我們可以使用分析無用依賴外掛進行處理:gradle-lint-plugin
注意: 他可能存在刪除錯誤的參照依賴,需要刪除後進行檢查和測試
並且,這裡僅支援單模組專案,如果是多模組專案請參考官方檔案進行處理
官方檔案地址: https://github.com/nebula-plugins/gradle-lint-plugin/wiki
在專案的 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' }
在 build.gradle
應用 該外掛,並在任意位置,設定檢測規則:
apply plugin :"nebula.lint" gradleLint.rules=['unused-dependency']
IDEA
使用 Gradle 進行重新載入專案,則會出現 Lint
選單, 如下圖所示:
點選 lint -> generateGradleLintReport
, 可以生成報告。
報告僅保留不同型別的省略結果,可以看到有以下四種報告結果:
其中, 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.
我們可以看到報告的最後一句話,
To apply fixes automatically, run fixGradleLint, review, and commit the changes.
最後,可以執行 fixGradleLint
自動刪除無用依賴。
修復報告如下,我們可以看到除了無用的依賴,還有一些其他的依賴也被刪除了,原因是因為,他認為我們可以直接引入其對應的依賴而不是整個依賴包。
例如,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 是一個編譯時自動生成 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' }
相關 Github issue: Nebula Lint does not handle certain @Retention(RetentionPolicy.SOURCE) annotations correctly #170
使用該外掛可以一定程度上幫助我們刪除無用依賴,但是也可能會多刪除有用的依賴。
需要在使用外掛自動修復後手動檢測專案,驗證是否會出現問題,避免導致上線釋出錯誤的負優化。
到此這篇關於IDEA 下 Gradle 刪除多餘無用依賴的文章就介紹到這了,更多相關idea Gradle 刪除依賴內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45