Gradle Modernizer Plugin يكتشف استخدامات واجهات برمجة التطبيقات القديمة التي تحل محل إصدارات Java الحديثة.
غالبًا ما تكون واجهات برمجة التطبيقات الحديثة هذه أكثر أداءً وأكثر أمانًا وذاتية من المعادلات القديمة. Objects.equals سبيل المثال ، يمكن لـ Modernizer اكتشاف استخدامات Vector بدلاً من ArrayList و String.getBytes(String) بدلاً من Objects.equal String.getBytes(Charset) و guava. يكتشف التكوين الافتراضي أكثر من 200 واجهات برمجة التطبيقات القديمة ، بما في ذلك مكتبات الجهات الخارجية مثل الجوافة.
هذا البرنامج المساعد Gradle هو في الواقع غلاف حول المكون الإضافي Modernizer Maven بحيث تتوفر الآن الوظيفة نفسها الآن في Builds 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 '
} إذا كنت لا تزال تستخدم المعرف المكون الإضافي القديم com.github.andygoossens.gradle-modernizer-plugin ، فيرجى التبديل إلى com.github.andygoossens.modernizer بدلاً من ذلك.
إذا كنت ترغب في الاتصال بمهمة modernizer مباشرة:
./gradlew modernizer معظم الوقت لا تحتاج إلى استدعاء مهمة modernizer بنفسك. تعرف المهمة مكانها داخل دورة حياة البناء ، وسيتم تنفيذها كلما اعتبرت ضرورية.
| اسم الخاصية | يكتب | القيمة الافتراضية | وصف |
|---|---|---|---|
| أداة | خيط | انظر الجدول أدناه | نسخة من Modernizer-Maven-Plugin التي سيتم استخدامها. |
| javaversion | خيط | $ {project.targetCompatibility} | هدف جافا. تقرر أي انتهاكات ستقدم. |
| Failonviolations | منطقية | خطأ شنيع | فشل بناء عند اكتشاف انتهاك. |
| includeTestClasses | منطقية | خطأ شنيع | ما إذا كان سيتم البحث في فصول الاختبار عن الانتهاكات. |
| العنصر | خيط | تحذير | سجلات الانتهاكات في هذا المستوى. القيم الممكنة: خطأ ، تحذير ، معلومات ، تصحيح ، تتبع |
| انتهاكات | خيط | باطل | ملف الانتهاك المحدد للمستخدم. يتجاوز الشيكات الانتهاك القياسي. |
| انتهاكات | خيط[] | [] | ملفات انتهاك محددة من قبل المستخدم. يتجاوز violationsFile والشيكات القياسية. |
| الاستبعاد | خيط | باطل | يعطل الانتهاكات المحددة للمستخدم. انظر الوصف التنسيق أدناه. |
| استثناءات | خيط[] | [] | انتهاكات لتعطيل. انظر الوصف التنسيق أدناه. |
| الاستبعاد | خيط[] | [] | أنماط الانتهاك لتعطيل. انظر الوصف التنسيق أدناه. |
| تجاهل | خيط[] | [] | بادئات الحزمة لتجاهلها. انظر الوصف التنسيق أدناه. |
| جينوريكيلاسينامبورت | خيط[] | [] | أسماء الفئات المؤهلة الكاملة (بما في ذلك الحزمة) لتجاهل. انظر الوصف التنسيق أدناه. |
| يتجاهل classes | منطقية | حقيقي | سواء أكان فصولًا مشروطة بتوضيح سياسة الاحتفاظ بها ، سيتم تجاهل سياسة 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 ' ,
]
}هذه قائمة بأسماء الفئات المؤهلة الكاملة (بما في ذلك الحزمة) لتجاهلها. يجب أن يكون كل استبعاد تعبيرًا منتظمًا يطابق حزمة و/أو فئة ؛ سيتم فصل اسم الحزمة ، وليس مفصولة DOT (تنسيق 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 Plugin هو في الأساس غلاف حول المكون الإضافي Modernizer Maven. يصف الجدول أدناه كيف يرتبطون ببعضهم البعض.
| Gradle Modernizer Plugin | Modernizer Maven Plugin |
|---|---|
| 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 . انتبه: قد ينكسر هذا عندما يكون هناك تغيير في واجهة برمجة التطبيقات!
يبدو رائعا! ومع ذلك ، لا يمكنني إضافته بنفسي حيث يحافظ مكون Modernizer Maven على قائمة قواعد الانتهاك. افتح مشكلة هناك ووصف ما وجدته.
لاحظ أنه قد يستغرق الأمر بعض الوقت لهم لإصدار نسخة جديدة مع القاعدة الخاصة بك.
هذا ليس سؤالا. لسوء الحظ ، ربما لم أجد الوقت لإصدار إصدار جديد من البرنامج المساعد Gradle.
في هذه الأثناء ، يمكنك تحديد الإصدار المطلوب في خاصية ملحق toolVersion . سيقوم Gradle Plugin بعد ذلك بالتقاط الإصدار المطلوب ، وإذا كان واجهة برمجة التطبيقات لا تزال كما هي ، فاستخدمها.
modernizer {
toolVersion = ' 1.10.0 '
}هذا يعتمد على ما إذا كانت الميزة خاصة بـ Gradle. إذا كان الأمر كذلك ، فسوف أرى ما يمكنني فعله. ومع ذلك ، إذا كان ذلك يتطلب تغييرات في البرنامج المساعد Modernizer Maven ، فإن الأمر متروك للمباريات.
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.