ปลั๊กอิน Gradle Modernizer ตรวจจับการใช้ API แบบดั้งเดิมซึ่งรุ่น Java ที่ทันสมัยมาแทนที่
APIs ที่ทันสมัยเหล่านี้มักจะมีนักแสดงปลอดภัยและมีสำนวนมากกว่ามรดกที่เทียบเท่า ตัวอย่างเช่น Modernizer สามารถตรวจจับการใช้ Vector แทน ArrayList , String.getBytes(String) แทน String.getBytes(Charset) และ guava Objects.equal แทน java 7 Objects.equals การกำหนดค่าเริ่มต้นตรวจจับ API ดั้งเดิมกว่า 200 ตัวรวมถึงไลบรารีบุคคลที่สามเช่น Guava
ปลั๊กอิน Gradle นี้จริง ๆ แล้วเป็น wrapper รอบ ๆ ปลั๊กอิน maven modernizer เพื่อให้ฟังก์ชั่นเดียวกันนี้พร้อมใช้งานในการสร้าง Gradle
หากต้องการใช้ปลั๊กอินให้รวมไว้ในสคริปต์บิลด์ของคุณ:
// You need to do this only once
plugins {
// Option A: When your root project has a SourceSet
// e.g. the root project is applying the java/groovy/kotlin plugin as well
id " com.github.andygoossens.modernizer " version " 1.10.0 "
// Option B: When your root project does not have a SourceSet
id " com.github.andygoossens.modernizer " version " 1.10.0 " apply false
}
repositories {
mavenCentral()
}
// Option 1: Apply the plugin in each project where you want to use it
// Gradle's old way:
apply plugin : ' com.github.andygoossens.modernizer '
// Gradle's new way:
plugins {
id ' com.github.andygoossens.modernizer '
}
// Option 2: Apply the plugin in all projects (even in the root project)
// Preferably used with option A (= not mentioning 'apply false')
allprojects {
apply plugin : ' com.github.andygoossens.modernizer '
}
// Option 3: Apply the plugin in all sub-projects (but not the root project)
// Preferably used with option B (= mentioning 'apply false')
subprojects {
apply plugin : ' com.github.andygoossens.modernizer '
} หากคุณยังคงใช้ปลั๊กอิน ID เก่า com.github.andygoossens.gradle-modernizer-plugin โปรดสลับไปที่ com.github.andygoossens.modernizer แทน
หากคุณต้องการเรียกงาน modernizer โดยตรง:
./gradlew modernizer ส่วนใหญ่คุณไม่จำเป็นต้องเรียกงาน modernizer ด้วยตัวเอง งานรู้สถานที่ภายในวงจรชีวิตการสร้างและมันจะดำเนินการเมื่อใดก็ตามที่มันเป็นสิ่งจำเป็น
| ชื่ออสังหาริมทรัพย์ | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| เครื่องใช้เครื่องมือ | สาย | ดูตารางด้านล่าง | รุ่นของ Modernizer-Maven-Plugin ที่จะใช้ |
| การชวา | สาย | $ {Project.targetCompatibility} | กำหนดเป้าหมายเวอร์ชัน Java ตัดสินใจว่าจะใช้การละเมิดใด |
| ความล้มเหลว | บูลีน | เท็จ | Fail Build เมื่อตรวจพบการละเมิด |
| รวมถึงคลาส | บูลีน | เท็จ | ไม่ว่าจะเป็นการค้นหาคลาสทดสอบหรือไม่ |
| การละเมิด | สาย | เตือน | บันทึกการละเมิดในระดับนี้ ค่าที่เป็นไปได้: ข้อผิดพลาด, เตือน, ข้อมูล, การดีบัก, ติดตาม |
| การละเมิดไฟล์ | สาย | โมฆะ | ไฟล์การละเมิดที่ผู้ใช้ระบุ แทนที่การตรวจสอบการละเมิดมาตรฐาน |
| การละเมิด | สตริง [] | - | ไฟล์การละเมิดที่ผู้ใช้ระบุ แทนที่ violationsFile และการตรวจสอบมาตรฐาน |
| การยกเว้นไฟล์ | สาย | โมฆะ | ปิดใช้งานการละเมิดที่ผู้ใช้ระบุ ดูคำอธิบายรูปแบบด้านล่าง |
| การยกเว้น | สตริง [] | - | การละเมิดเพื่อปิดการใช้งาน ดูคำอธิบายรูปแบบด้านล่าง |
| ตัวแยก | สตริง [] | - | รูปแบบการละเมิดเพื่อปิดการใช้งาน ดูคำอธิบายรูปแบบด้านล่าง |
| ความไม่รู้ | สตริง [] | - | คำนำหน้าแพ็คเกจเพื่อเพิกเฉย ดูคำอธิบายรูปแบบด้านล่าง |
| ไม่รู้ | สตริง [] | - | ชื่อคลาสที่ผ่านการรับรองเต็มรูปแบบ (แพ็คเกจรวม) เพื่อละเว้น ดูคำอธิบายรูปแบบด้านล่าง |
| ไม่สนใจคลาส | บูลีน | จริง | ไม่ว่าจะเป็นคลาสที่มีคำอธิบายประกอบด้วยคำอธิบายประกอบที่มีนโยบายการเก็บรักษาเป็น runtime หรือ class และมีชื่อง่าย ๆ ที่มี "สร้าง" จะถูกละเว้น |
| ข้าม | บูลีน | เท็จ | ไม่ว่าจะเป็นงานที่ควรข้าม |
modernizer {
failOnViolations = true
includeTestClasses = true
}โปรดทราบว่าคุณสามารถกำหนดค่าปลั๊กอินในโครงการที่ใช้ปลั๊กอินเท่านั้น ดูหัวข้อ "การใช้งาน" ด้านบน
นี่คือไฟล์ข้อความที่มีการยกเว้นหนึ่งบรรทัดต่อบรรทัดในรูปแบบ Javap
ตัวอย่าง:
java/lang/String.getBytes:(Ljava/lang/String;)[B
com/google/common/base/Function
sun/misc/BASE64Decoder.decodeBuffer:(Ljava/lang/String;)[B
นี่คือรายการของการยกเว้น การยกเว้นแต่ละครั้งควรอยู่ในรูปแบบ Javap
ตัวอย่าง:
modernizer {
exclusions = [
' java/lang/String.getBytes:(Ljava/lang/String;)[B ' ,
' com/google/common/base/Function ' ,
' sun/misc/BASE64Decoder.decodeBuffer:(Ljava/lang/String;)[B ' ,
]
}นี่คือรายการรูปแบบการยกเว้น การยกเว้นแต่ละครั้งควรเป็นนิพจน์ทั่วไปที่ตรงกับรูปแบบ Javap ของการละเมิด
ตัวอย่าง:
modernizer {
exclusionPatterns = [
' java/lang/.* ' ,
]
}นี่คือรายการคำนำหน้าแพ็คเกจที่จะไม่มีการรายงานการละเมิด
การเพิกเฉยต่อแพ็คเกจจะไม่สนใจลูก ๆ ทั้งหมด การระบุ foo.bar ต่อมาไม่สนใจ foo.bar.* , foo.bar.baz.* และอื่น ๆ
ตัวอย่าง:
modernizer {
ignorePackages = [
' com.github.andygoossens ' ,
]
}นี่คือรายการชื่อคลาสที่ผ่านการรับรองเต็มรูปแบบ (แพ็คเกจรวม) เพื่อละเว้น การยกเว้นแต่ละครั้งควรเป็นนิพจน์ทั่วไปที่ตรงกับแพ็คเกจและ/หรือคลาส ชื่อแพ็คเกจจะถูกแยกออกจากกันไม่ใช่การแยกจุด (รูปแบบของ ASM)
ตัวอย่าง:
modernizer {
ignoreClassNamePatterns = [
' .*MyLegacyClass ' ,
]
} คุณไม่สามารถเพิกเฉย @SuppressModernizer องค์ประกอบโดยใช้คุณสมบัติส่วนขยาย (ดูด้านบน) คุณสามารถระบุได้ว่าปลั๊กอินควรเพิกเฉย
import org . gaul . modernizer_maven_annotations . SuppressModernizer ;
public class Example {
@ SuppressModernizer
public static void method () { /* your code here */ }
}เพิ่มการพึ่งพาต่อไปนี้ในสคริปต์บิลด์ Gradle ของคุณ:
// Option 1: compile time dependency (Gradle's old way)
compile ' org.gaul:modernizer-maven-annotations:2.6.0 '
// Option 2: implementation dependency (Gradle's new way)
implementation ' org.gaul:modernizer-maven-annotations:2.6.0 ' ปลั๊กอิน Gradle Modernizer นั้นเป็นเสื้อคลุมรอบ ๆ ปลั๊กอิน Maven Maven ตารางด้านล่างอธิบายถึงวิธีที่พวกเขาเกี่ยวข้องกัน
| ปลั๊กอิน Gradle Modernizer | ปลั๊กอิน maven Modernizer |
|---|---|
| 1.0.x | 1.6.0 |
| 1.1.x | 1.6.0 |
| 1.2.x | 1.8.0 |
| 1.3.x | 2.0.0 |
| 1.4.x | 2.1.0 |
| 1.5.x | 2.2.0 |
| 1.6.x | 2.3.0 |
| 1.7.x | 2.5.0 |
| 1.8.x | 2.6.0 |
| 1.9.x | 2.7.0 |
| 1.10.0 | 2.9.0 |
โปรดทราบว่าคุณสามารถแทนที่ปลั๊กอิน Modernizer Maven เวอร์ชันเริ่มต้นซึ่งจะใช้ ระบุเวอร์ชันที่ต้องการในคุณสมบัติการขยาย toolVersion ให้ความสนใจ: สิ่งนี้อาจแตกเมื่อมีการเปลี่ยนแปลง API!
ฟังดูดี! อย่างไรก็ตามฉันไม่สามารถเพิ่มด้วยตัวเองในฐานะ Modernizer Maven Plugin รักษารายการกฎการละเมิด เปิดปัญหาที่นั่นและอธิบายสิ่งที่คุณพบ
โปรดทราบว่าอาจใช้เวลาสักครู่เพื่อให้พวกเขาปล่อยเวอร์ชันใหม่ด้วยกฎของคุณ
นั่นไม่ใช่คำถาม น่าเสียดายที่ฉันอาจไม่พบเวลาที่จะปล่อยปลั๊กอินรุ่นใหม่ของ Gradle
ในขณะเดียวกันคุณสามารถระบุเวอร์ชันที่ต้องการในคุณสมบัติการขยาย toolVersion ปลั๊กอิน Gradle จะรับรุ่นที่ร้องขอและหาก API ยังคงเหมือนเดิมให้ใช้
modernizer {
toolVersion = ' 1.10.0 '
}ขึ้นอยู่กับว่าคุณลักษณะนั้นเฉพาะเจาะจงกับ Gradle หรือไม่ ถ้าเป็นเช่นนั้นฉันจะเห็นสิ่งที่ฉันสามารถทำได้ อย่างไรก็ตามหากต้องการการเปลี่ยนแปลงในปลั๊กอิน Maven Maven Maverine ก็ขึ้นอยู่กับผู้ดูแล
Licensed under the Apache License, Version 2.0
Copyright (C) 2016-2024 Andy Goossens
Inspired by, and based upon code from:
Modernizer Maven Plugin
Copyright (C) 2014-2023 Andrew Gaul
Gradle Docker plugin
Copyright (C) 2014 the original author or authors.