El complemento de Gradle Modernizer detecta los usos de las API heredadas que las versiones modernas de Java reemplazan.
Estas API modernas a menudo son más performantes, más seguras e idiomáticas que los equivalentes heredados. Por ejemplo, Modernizer puede detectar los usos de Vector en lugar de ArrayList , String.getBytes(String) en lugar de String.getBytes(Charset) y Guava Objects.equal . Equal en lugar de Java 7 Objects.equals . La configuración predeterminada detecta más de 200 API heredadas, incluidas bibliotecas de terceros como Guava.
Este complemento de Gradle es en realidad un envoltorio alrededor del complemento Modernizer Maven, por lo que la misma funcionalidad ahora está disponible en las compilaciones de Gradle.
Para usar el complemento, incluya en su script de compilación:
// 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 '
} Si todavía está utilizando el antiguo ID del complemento com.github.andygoossens.gradle-modernizer-plugin , cambie a com.github.andygoossens.modernizer en su lugar.
Si desea llamar directamente a la tarea modernizer :
./gradlew modernizer La mayoría de las veces no necesita llamar a la tarea modernizer usted mismo. La tarea conoce su lugar dentro del ciclo de vida de compilación, y se ejecutará siempre que se considere necesario.
| Nombre de propiedad | Tipo | Valor predeterminado | Descripción |
|---|---|---|---|
| gastador de herramientas | Cadena | Ver tabla a continuación | Versión de Modernizer-Maven-Plugin que se utilizará. |
| javaversión | Cadena | $ {Project.TargetCompatibility} | Versión de Java objetivo. Decide qué violaciones se aplicarán. |
| Failonviolations | booleano | FALSO | Fail Build cuando se ha detectado una violación. |
| incluirclases | booleano | FALSO | Si las clases de prueba se buscarán violaciones. |
| ViolationLoglevel | Cadena | advertir | Registros de violaciones en este nivel. Valores posibles: error, advertencia, información, depuración, rastreo |
| archivo de violaciones | Cadena | nulo | Archivo de violación especificado por el usuario. Anula los controles de violación estándar. |
| Aflentos de violaciones | Cadena[] | [] | Archivos de violación especificados por el usuario. Anula violationsFile y cheques estándar. |
| archivo de exclusiones | Cadena | nulo | Desactiva las violaciones especificadas por el usuario. Vea la descripción del formato a continuación. |
| exclusiones | Cadena[] | [] | Violaciones para deshabilitar. Vea la descripción del formato a continuación. |
| Patrones de exclusión | Cadena[] | [] | Patrones de violación para deshabilitar. Vea la descripción del formato a continuación. |
| IgnorePackages | Cadena[] | [] | Prefijos de paquete para ignorar. Vea la descripción del formato a continuación. |
| ignoreclassnamepatterns | Cadena[] | [] | Nombres de clase calificados completos (paquete incl.) Para ignorar. Vea la descripción del formato a continuación. |
| clases ignorantes | booleano | verdadero | Se ignorará si las clases anotadas con una anotación cuya política de retención es runtime o class y cuyo nombre simple contiene "generado" se ignorará. |
| saltar | booleano | FALSO | Si la tarea debe ser omitida. |
modernizer {
failOnViolations = true
includeTestClasses = true
}Tenga en cuenta que solo puede configurar los proyectos de complemento en los que se ha aplicado el complemento. Consulte la sección "Uso" arriba.
Este es un archivo de texto con una exclusión por línea en el formato Javap.
Ejemplo:
java/lang/String.getBytes:(Ljava/lang/String;)[B
com/google/common/base/Function
sun/misc/BASE64Decoder.decodeBuffer:(Ljava/lang/String;)[B
Esta es una lista de exclusiones. Cada exclusión debe estar en el formato Javap.
Ejemplo:
modernizer {
exclusions = [
' java/lang/String.getBytes:(Ljava/lang/String;)[B ' ,
' com/google/common/base/Function ' ,
' sun/misc/BASE64Decoder.decodeBuffer:(Ljava/lang/String;)[B ' ,
]
}Esta es una lista de patrones de exclusión. Cada exclusión debe ser una expresión regular que coincida con el formato Javap de una violación.
Ejemplo:
modernizer {
exclusionPatterns = [
' java/lang/.* ' ,
]
}Esta es una lista de prefijos de paquetes para los cuales no se informarán violaciones.
Ignorar un paquete ignorará a todos sus hijos. Especificar foo.bar posteriormente ignora foo.bar.* , foo.bar.baz.* Y así sucesivamente.
Ejemplo:
modernizer {
ignorePackages = [
' com.github.andygoossens ' ,
]
}Esta es una lista de nombres de clases calificados completos (paquete inclinado) para ignorar. Cada exclusión debe ser una expresión regular que coincida con un paquete y/o clase; El nombre del paquete será separado por barras, no separado por DOT (formato de ASM).
Ejemplo:
modernizer {
ignoreClassNamePatterns = [
' .*MyLegacyClass ' ,
]
} No solo puede ignorar los elementos mediante el uso de propiedades de extensión (ver arriba), puede indicar que el complemento debe ignorar las violaciones dentro de una clase o método agregando @SuppressModernizer al elemento que desea ignorar:
import org . gaul . modernizer_maven_annotations . SuppressModernizer ;
public class Example {
@ SuppressModernizer
public static void method () { /* your code here */ }
}Agregue la siguiente dependencia a su script de compilación de 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 es básicamente un envoltorio alrededor del complemento Modernizer Maven. La siguiente tabla describe cómo se relacionan entre sí.
| Complemento de modernizador de gradle | 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 |
Tenga en cuenta que puede anular la versión predeterminada del complemento Modernizer Maven que se utilizará. Especifique la versión deseada en la propiedad de Extensión de Versión toolVersion . Presta atención: ¡esto podría romper cuando hay un cambio de API!
¡Suena genial! Sin embargo, no puedo agregarlo yo mismo, ya que el complemento Modernizer Maven mantiene la lista de reglas de violación. Abra un problema allí y describa lo que encontró.
Tenga en cuenta que puede tomar algún tiempo para lanzar una nueva versión con su regla.
Esa no es una pregunta. Desafortunadamente, es posible que no haya encontrado el momento de lanzar una nueva versión del complemento Gradle.
Mientras tanto, puede especificar la versión deseada en la propiedad de Extensión de Versión toolVersion . El complemento de Gradle luego recogerá la versión solicitada y, si la API sigue siendo la misma, úsela.
modernizer {
toolVersion = ' 1.10.0 '
}Eso depende de si la característica es específica para Gradle. Si es así, veré qué puedo hacer. Sin embargo, si requiere cambios en el complemento Modernizer Maven, entonces depende de sus mantenedores.
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.