Version.java#.#.#.# avec suffixes optionnels b{beta}, rc{candidat-de-version} et -SNAPSHOT. Implémente Comparable<Version> pour un ordonnancement correct (release > RC > beta, avec sous-comparaison numérique). Utilisé dans ProjectForge pour les vérifications de compatibilité des plugins et le versionnage des migrations de base de données.java.io.Serializable — Les versions sont sérialisées (p. ex., stockées dans les enregistrements de version de plugin en base de données)org.apache.commons.lang3.StringUtils — Découpage de chaînes pour l'analyse des composants de version pointésorg.slf4j.Logger — Journalisation via SLF4J (journalisation d'erreurs pour les chaînes de version mal formées)Version implémente Comparable<Version>, Serializable
</> en Kotlin| Composant | Champ | Valeur par défaut/non définie | Exemple |
|---|---|---|---|
| Version majeure | majorRelease | 0 | 3.5.4.2 → major=3 |
| Version mineure | minorRelease | 0 | 3.5.4.2 → minor=5 |
| Niveau de correctif | patchLevel | 0 | 3.5.4.2 → patch=4 |
| Numéro de build | buildNumber | 0 | 3.5.4.2 → build=2 |
| Version bêta | betaVersion | Integer.MAX_VALUE (pas bêta) | 3.5b2 → beta=2 |
| Version RC | releaseCandidateVersion | Integer.MAX_VALUE (pas RC) | 3.5rc1 → rc=1 |
| Indicateur snapshot | snapshot | false | 3.5-SNAPSHOT |
Le constructeur de chaîne accepte ces motifs (insensibles à la casse pour les suffixes) :
"3" → major=3"3.5" → major=3, minor=5"3.5.4" → major=3, minor=5, patch=4"3.5.4.2" → major=3, minor=5, patch=4, build=2"3.5b2" ou "3.5b" → beta=2 ou beta=0"3.5rc1" ou "3.5rc" → rc=1 ou rc=0"3.5-SNAPSHOT" ou "3.5-snapshot" → snapshot=true"3.5.4.2b2-SNAPSHOT"La comparaison suit une hiérarchie stricte :
Cet ordonnancement garantit : 3.5b1 < 3.5rc1 < 3.5 — essentiel pour déterminer si une migration de base de données ou une mise à jour de plugin est nécessaire.
La méthode parseInt() détecte le jeton non développé de Gradle "gradle.version" et le traite comme 0, en journalisant un avertissement. Cela gère le cas où les informations de version sont compilées dans un JAR au moment du build et où la propriété de version Gradle n'a pas encore été résolue (p. ex., lors d'exécutions de tests dans l'IDE).
3.5 (patch=0, build=0) → "3.5"3.5.4 (patch≠0, build=0) → "3.5.4"3.5.4.2 (toutes les parties) → "3.5.4.2"3.5b2 (bêta) → "3.5b2"3.5rc1 (RC) → "3.5rc1"3.5-SNAPSHOT (snapshot) → "3.5-SNAPSHOT"Integer.MAX_VALUE comme sentinelle pour « pas bêta/RC » est une décision de conception élégante. Elle garantit que, dans la comparaison numérique, une version non bêta se compare toujours comme supérieure à toute version bêta (car MAX_VALUE est le plus grand entier possible), tout en permettant une comparaison numérique directe lorsque les deux sont bêta/RC.compareTo NE prend PAS en compte l'indicateur snapshot dans l'ordonnancement. Deux versions ne différant que par le statut snapshot (p. ex., "3.5" vs "3.5-SNAPSHOT") seraient considérées comme égales. Cela peut être intentionnel — les snapshots indiquent des métadonnées de build plutôt que des différences de version sémantique.868d6abb7 2025 -> 2026 63081666f En-têtes de fichiers source : 2024 -> 2025. 0237d5eba Sérialisation JSON refactorisée : IdOnlySerializer et IdsOnlySerializer introduits. 6f7e0fbc7 Travaux de migration en cours... b6092df09 Copyright 2023 -> 2024 ab45d51fa Copyright 2001-2022 -> 2001-2023. 5f7ef41b8 Copyright 2021 -> 2022 ceb63e8a1 En-tête de code source : (C) 2001-2021.