Web Analytics

konvert

⭐ 156 stars French by mcarleio

Konvert

[![Maven Central][maven-image]][maven-url] [![License][license-image]](LICENSE) [![Code Coverage][codecov-image]][codecov-url]

Voici Konvert, un générateur de code de mappage Kotlin utilisant Kotlin Symbol Processing (KSP). Conçu spécifiquement pour Kotlin et ses fonctionnalités, Konvert prend en charge un large éventail de cas d'utilisation.

Fonctionnalités principales :

> ℹ️ Ce README fournit un aperçu basique, pour plus de détails consultez la documentation.

Utilisation

Il existe trois façons différentes d’utiliser Konvert :

   @KonvertTo(PersonDto::class)
   data class Person(val firstName: String, val lastName: String)
   data class PersonDto(val firstName: String, val lastName: String)
   ``
   Cela générera la fonction d'extension suivante
   `kotlin
   fun Person.toPersonDto(): PersonDto =
      PersonDto(firstName = firstName, lastName = lastName)
   `
  • Utilisation de @KonvertFrom (particulièrement utile si vous ne pouvez pas modifier le code de la classe source)
`kotlin class Person(val firstName: String, val lastName: String) { @KonvertFrom(PersonDto::class) companion object } class PersonDto(val firstName: String, val lastName: String) ` Cela générera la fonction d'extension suivante `kotlin fun Person.Companion.fromPersonDto(personDto: PersonDto): Person = Person(firstName = personDto.firstName, lastName = personDto.lastName) `

  • Utilisation de @Konverter :
`kotlin class Person(val firstName: String, val lastName: String) data class PersonDto(val firstName: String, val lastName: String)

@Konverter interface PersonMapper { fun toDto(person: Person): PersonDto } ` Cela générera l'objet suivant `kotlin object PersonMapperImpl: PersonMapper { override fun toDto(person: Person): PersonDto = PersonDto(firstName = person.firstName, lastName = person.lastName) } ` Pour un exemple de projet simple, consultez le répertoire example.

Correspondances de types

Pour des correspondances de types simples, comme de Instant à Date, un convertisseur de type est déjà fourni avec Konvert :

kotlin @KonvertTo(PersonDto::class) class Person(val name: String, val birthday: Instant) class PersonDto(val name: String, val birthday: Date)

Cela générera la fonction d'extension suivante
kotlin fun Person.toPersonDto(): PersonDto = PersonDto( name = name, birthday = birthday.let { java.util.Date.from(it) } )

Consultez la documentation pour une liste des convertisseurs de types fournis.

🛈 : Vous pouvez également créer votre propre bibliothèque de convertisseurs de types en implémentant TypeConverter et en l'enregistrant via SPI.

Ajustement fin

La plupart du temps, les classes source et cible peuvent ne pas avoir les mêmes noms et types de propriétés. Vous pouvez configurer des mappages spécifiques et renommer la fonction d’extension générée ainsi :

kotlin @KonvertTo( PersonDto::class, mappings = [ Mapping(source = "firstName", target = "givenName"), Mapping(source = "lastName", target = "familyName") ], mapFunctionName = "asDto" ) class Person(val firstName: String, val lastName: String) class PersonDto(val givenName: String, val familyName: String)

Cela générera la fonction d'extension suivante
kotlin fun Person.asDto(): PersonDto = PersonDto( givenName = firstName, familyName = lastName )
`

Pour plus de fonctionnalités, consultez la documentation les KDocs des annotations, le projet exemple ou les tests.

Configuration Gradle

Pour utiliser Konvert avec Gradle, vous devez effectuer les étapes suivantes :

`kotlin dependencies { implementation("io.mcarle:konvert-api:$konvertVersion") } `
  • Ajouter le plugin KSP :
`kotlin plugins { id("com.google.devtools.ksp").version("2.3.5") } `

`kotlin dependencies { ksp("io.mcarle:konvert:$konvertVersion") } `

Configuration Maven

Pour utiliser Konvert avec Maven, vous devez effectuer les étapes suivantes :

`xml io.mcarle konvert-api ${konvert.version} `

`xml io.mcarle ksp-maven-plugin 2.3.5-1 ksp io.mcarle konvert ${konvert.version} `

Informations complémentaires

  • Konvert est principalement compilé et testé avec JDK >=17. Il devrait également fonctionner avec des versions inférieures à JDK 17, mais cela n’est pas garanti.
  • Konvert est capable de convertir des classes depuis et vers des classes écrites en Java (et probablement aussi dans d’autres langages JVM).

Alternatives

Il existe quelques alternatives à Konvert que vous pourriez vouloir découvrir :

Mappie n’utilise pas KSP, mais est plutôt un plugin de compilation pour Kotlin lui-même. Il utilise la réflexion plutôt que des références sous forme de chaînes pour définir les mappings, mais remplace le code de réflexion lors de la compilation par du code Kotlin idiomatique.

MapStruct est une bibliothèque de mapping Java bien connue utilisant le traitement d’annotations (voir kapt). Peut être utilisée dans des projets Kotlin, mais ne supporte pas les fonctionnalités spécifiques à Kotlin.

kMapper est aussi un processeur KSP, mais semble ne supporter que le mapping entre classes de données Kotlin.

ShapeShift utilise la réflexion à l’exécution pour mapper entre les classes.

  • Codez vous-même (avec le support de l’IA)
En effet, il peut parfois être plus rapide, plus simple et plus flexible d’écrire manuellement le code de mapping. Avec l’aide des outils d’IA actuels, cette tâche répétitive peut être automatisée dans une certaine mesure.

Compilation

Gradle

Pour construire le projet, il suffit d’exécuter

gradle build

#### Exécuter tous les tests

Par défaut, seul un sous-ensemble des tests disponibles est exécuté, ce qui devrait vérifier la plupart des fonctionnalités de Konvert. Pour exécuter tous les tests, ajoutez la propriété runAllTests, par exemple :

gradle test -PrunAllTests

Documentation

Pour servir le site Jekyll localement, exécutez simplement la commande suivante dans docs` :

docker run --rm -it -v "$PWD":/site -p 4000:4000 bretfisher/jekyll-serve

CI

GitHub Actions sont utilisés pour :

Journal des modifications

Le journal des modifications contient tous les changements notables.

Licence

Copyright 2023 Marcel Carlé

Sous licence Apache, version 2.0 (la "Licence"); vous ne pouvez utiliser ce fichier que conformément à la Licence. Vous pouvez obtenir une copie de la Licence à

http://www.apache.org/licenses/LICENSE-2.0

Sauf exigence légale ou accord écrit, le logiciel distribué sous la Licence est distribué "EN L’ÉTAT", SANS GARANTIES NI CONDITIONS D'AUCUNE SORTE, explicites ou implicites. Consultez la Licence pour les permissions spécifiques régissant et les limitations sous la Licence.

[maven-image]: https://img.shields.io/maven-central/v/io.mcarle/konvert.svg

[maven-url]: https://central.sonatype.com/artifact/io.mcarle/konvert/

[license-image]: https://img.shields.io/github/license/mcarleio/konvert.svg

[codecov-image]: https://img.shields.io/codecov/c/github/mcarleio/konvert.svg

[codecov-url]: https://codecov.io/gh/mcarleio/konvert

--- Tranlated By Open Ai Tx | Last indexed: 2026-04-08 ---