ฉันต้องการค้นหาการอ้างอิงที่ไม่ได้ใช้ในโครงการของฉัน มีฟีเจอร์นี้ใน Gradle เหมือนใน Maven หรือไม่?
ฉันต้องการค้นหาการอ้างอิงที่ไม่ได้ใช้ในโครงการของฉัน มีฟีเจอร์นี้ใน Gradle เหมือนใน Maven หรือไม่?
คำตอบ:
ในเดือนมิถุนายน 2017ที่พวกเขาได้รับการปล่อยตัว
4.0.0 version
และเปลี่ยนชื่อเป็นชื่อโครงการรากไป"gradle-lint-plugin"
"nebula-lint-plugin"
พวกเขายังได้เพิ่มการสนับสนุน Android ที่จะพึ่งพาไม่ได้ใช้
ในเดือนพฤษภาคม 2559 Gradle ได้ติดตั้งปลั๊กอิน Gradle lintเพื่อค้นหาและลบการพึ่งพาที่ไม่ต้องการ
ปลั๊กอิน Gradle Lint เป็นเครื่องมือ Linter แบบเสียบได้และกำหนดค่าได้สำหรับการระบุและรายงานเกี่ยวกับรูปแบบของการใช้งานในทางที่ผิดหรือการเลิกใช้งานในสคริปต์ Gradle และไฟล์ที่เกี่ยวข้อง
ปลั๊กอินนี้มีกฎต่างๆ กฎการพึ่งพาที่ไม่ได้ใช้เป็นหนึ่งในนั้น มีลักษณะเฉพาะสามประการ
หากต้องการใช้กฎให้เพิ่ม:
gradleLint.rules += 'unused-dependency'
รายละเอียดของกฎการพึ่งพาที่ไม่ได้ใช้มีให้ในส่วนสุดท้าย
วิธีใช้ปลั๊กอิน Gradle lint:
buildscript { repositories { jcenter() } }
plugins {
id 'nebula.lint' version '0.30.2'
}
อีกวิธีหนึ่งคือ:
buildscript {
repositories { jcenter() }
dependencies {
classpath 'com.netflix.nebula:gradle-lint-plugin:latest.release'
}
}
apply plugin: 'nebula.lint'
กำหนดกฎที่คุณต้องการทับถม:
gradleLint.rules = ['all-dependency'] // Add as many rules here as you'd like
สำหรับการสร้างองค์กรเราขอแนะนำให้กำหนดกฎ lint ในสคริปต์ init.gradle หรือในสคริปต์ Gradle ที่รวมอยู่ใน Gradle ใช้จากกลไก
สำหรับโครงการหลายโมดูลเราขอแนะนำให้ใช้ปลั๊กอินในallprojects
บล็อก:
allprojects {
apply plugin: 'nebula.lint'
gradleLint.rules = ['all-dependency'] // Add as many rules here as you'd like
}
หากต้องการใช้กฎให้เพิ่ม:
gradleLint.rules += 'unused-dependency'
กฎจะตรวจสอบไบนารีที่คอมไพล์แล้วซึ่งเล็ดลอดออกมาจากชุดแหล่งที่มาของโปรเจ็กต์ของคุณโดยมองหาการอ้างอิงคลาสและจับคู่การอ้างอิงเหล่านั้นกับการอ้างอิงที่คุณได้ประกาศไว้ในบล็อกการอ้างอิงของคุณ
สำหรับข้อมูลประเภทของคุณฉันต้องการแบ่งปันเกี่ยวกับปลั๊กอินก่อนหน้านี้
แต่เวอร์ชั่น 1.0.3 ใหม่ล่าสุดจะถูกสร้างขึ้น 23 ธันวาคม 2014 หลังจากนั้นไม่มีการอัปเดตใด ๆ
หมายเหตุ: วิศวกรของเราหลายคนสับสนเกี่ยวกับปลั๊กอินนี้เนื่องจากพวกเขาอัปเดตเฉพาะหมายเลขเวอร์ชันเท่านั้นไม่มีอะไรอื่น
implementation
และapi
) และยิ่งแย่ลงแนะนำให้เปลี่ยนจากคนใหม่กับคนเก่าที่เลิกใช้แล้ว (เช่นcompile
, testCompile
ฯลฯ )
โครงการที่กล่าวถึงในคำตอบก่อนหน้านี้ดูเหมือนจะตายไปแล้ว ผมใช้gradle พึ่งพา-วิเคราะห์ การตั้งค่าทำได้ง่าย:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'ca.cutterslade.gradle:gradle-dependency-analyze:1.0.3'
}
}
apply plugin: 'ca.cutterslade.analyze'
จากนั้นทำ:
$ gradle analyzeDependencies
ผมได้มีจำนวนมากของโชคใช้พึ่งพาปลั๊กอินวิเคราะห์ Gradle ในการเริ่มต้นให้เพิ่มสองสิ่งต่อไปนี้ในสคริปต์สร้าง Gradle ของคุณ
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "com.github.nullstress:DependencyAnalysisPlugin:1.0.3"
}
}
และ
apply plugin: "dependencyAnalysis"
gradle analyze
เมื่อผู้ที่อยู่ในสถานที่วิ่ง หากมีการอ้างอิงที่ไม่ได้ใช้งานคุณจะได้รับความล้มเหลวในการสร้างที่แสดงผลลัพธ์ที่คล้ายกับข้อความด้านล่างรวมทั้งรายการของการอ้างอิงที่ไม่ได้ใช้งาน (ทั้งที่ประกาศและสกรรมกริยา) ความล้มเหลวของการสร้างนั้นมีประโยชน์มากหากคุณต้องการบังคับว่าไม่ควรมีการอ้างอิงที่ไม่ได้ใช้ผ่านการสร้าง CI
:foo:analyze FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':foo:analyze'.
> The project has unused declared artifacts
ฉันเพิ่งเรียนรู้เกี่ยวกับสิ่งนี้: https://plugins.gradle.org/plugin/com.autonomousapps.dependency-analysis
จากรูปลักษณ์มันอยู่ระหว่างการพัฒนา แต่ฉันยังไม่ได้ทดสอบ
แก้ไข: จริงๆแล้วมันยอดเยี่ยมมากมีคำแนะนำมากมาย (เช่นจะใช้ api กับการใช้งานหรือไม่)
หมายเหตุบรรณาธิการ: คำตอบนี้ล้าสมัย โปรดดูคำตอบด้านบน
คุณสามารถลองใช้ปลั๊กอิน com.github.nullstress.dependency-analysis Gradle
สร้างข้อมูลโค้ดสคริปต์สำหรับใช้ใน Gradle ทุกเวอร์ชัน:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "com.github.nullstress:DependencyAnalysisPlugin:1.0.3"
}
}
apply plugin: "com.github.nullstress.dependency-analysis"
สร้างตัวอย่างสคริปต์สำหรับกลไกปลั๊กอินใหม่การบ่มเพาะที่นำมาใช้ใน Gradle 2.1:
plugins {
id "com.github.nullstress.dependency-analysis" version "1.0.3"
}
นอกจากนี้ยังมีเธรด ( Gradle เทียบเท่ากับ "mvn dependency: analysis " หรือไม่ ) ในฟอรัม Gradle เกี่ยวกับเรื่องนี้
โครงการเกี่ยวกับคำตอบในอดีตส่วนใหญ่นั้นตายไปแล้ว แต่การวิเคราะห์การพึ่งพาอาศัยกันอย่างค่อยเป็นค่อยไปดูเหมือนจะยังมีชีวิตอยู่ ณ วันที่ 2016-05-30