⚠️ Este repositorio está archivado. Considera migrar tu configuración de procesamiento de anotaciones a KSP. ⚠️
NAPT
¿Qué es?
Una alternativa a KAPT que omite la generación de stubs y por lo tanto funciona hasta un 50% más rápido
Uso
Se requiere JDK 9+ para ejecutar este conjunto particular de herramientas
Una vez aplicado, ya no puedes referenciar código generado en código Kotlin, por lo que deberás escribir clases bridge en Java
para poder referenciar el código generado en Java desde fuentes Kotlin.
Por ejemplo, supongamos que tenemos el siguiente Componente Dagger 2 en Kotlin:
`` Kotlin
@Component
interface Component {
@Component.Factory interface Factory {
fun create(): Component } }
Java class ComponentBridge {entonces, para referenciar el componente generado desde el código Kotlin, tenemos que escribir unpuenteen Java que se vería así:
static Component.Factory factory() { return DaggerComponent.factory(); } }
Gradle plugins { kotlin("kapt") }Eso es todo, ahora puedes referenciar fácilmente estebridgedesde tu código Kotlin donde quierasEjemplo
Puedes ver un ejemplo de uso en sample
Descarga
#### Añadir plugin
- El plugin javac se distribuye a través de Maven Central
- El plugin Gradle se distribuye a través de Gradle Plugin Portal
Elimina tu antiguo
y reemplázalo con Gradle
plugins {
id("com.sergei-lapin.napt") version("{latest-version}")
}
entonces puedes reemplazar todo tu
Gradle
dependencies {
kapt("some dependency")
}
con Gradle
dependencies {
annotationProcessor("some dependency")
}
Eso es todo. Disfruta de la aceleración de tu procesamiento de anotaciones en aproximadamente un 50%.#### Clases NaptTrigger en conflicto
Por defecto, el plugin de Gradle generará NaptTrigger con un paquete nombrado por módulo para que los nombres FQ no choquen, pero, por si acaso, el prefijo del paquete de NaptTrigger se puede especificar de esta manera:
Gradle
napt {
naptTriggerPackagePrefix.set("com.slapin.napt")
}
Java package com.slapin.napt.sample; class NaptTrigger { }Asumamos que estamos en un módulo llamadosample, lo que resultará en el siguienteNaptTrigger.java:
Gradle napt { generateNaptTrigger.set(false) }#### Deshabilitar la generación de NaptTriggerNaptTrigger.javaLa generación de
puede deshabilitarse (por ejemplo, cuando ya tienes fuentes Java en tu módulo) estableciendo la propiedad correspondiente enfalse:
Gradle napt { forkJvmArgs.set(listOf("your_custom_arg")) }#### Suministro de argumentos JVM personalizados al compilador de Javacom.slapin.napt.JvmArgsStrongEncapsulationPara que napt funcione, la compilación de Java se ejecuta en un proceso bifurcado con argumentos definidos por
. Estos argumentos pueden ampliarse configurando la propiedad correspondiente en la extensiónnapt.
Gradle napt { additionalSourceSetsForTriggerGeneration.set(listOf("test")) } ``#### Generener NaptTrigger dentro de conjuntos de fuentes adicionalestestA veces puede ser necesario activar el procesamiento de anotaciones en conjuntos de fuentes adicionales (p. ej.,
). En tales casos, puede usar la propiedad correspondiente de la extensiónnapt:
--- Tranlated By Open Ai Tx | Last indexed: 2026-01-12 ---