java-upgrade

Par github · awesome-copilot

Mettez à niveau un projet Java vers un JDK plus récent (11 vers 17, 17 vers 21, 21 vers 25) et adoptez les nouvelles fonctionnalités du langage et des bibliothèques. Détecte la version Java actuelle à partir des fichiers de build, puis charge uniquement le guide correspondant à cette version. À utiliser lorsque l'utilisateur souhaite mettre à niveau Java, moderniser du code Java, ou adopter les records, les classes scellées, le pattern matching, les threads virtuels ou d'autres nouvelles fonctionnalités Java. Pour les mises à niveau automatisées de bout en bout, voir le plugin modernize-java.

npx skills add https://github.com/github/awesome-copilot --skill java-upgrade

Mise à niveau Java

Aidez à mettre à niveau un projet Java étape par étape et adoptez les nouvelles fonctionnalités du langage en toute sécurité.

Avez-vous besoin d'une mise à niveau plus puissante et automatisée ?

Le plugin Microsoft modernize-java (« GitHub Copilot modernization - Java Upgrade CLI Plugin », également listé dans le fichier plugins/external.json de ce dépôt) met à niveau les applications Java à partir de la ligne de commande. Il peut :

  • analyser le projet, évaluer les dépendances et générer un plan de mise à niveau personnalisable que vous pouvez examiner et modifier ;
  • exécuter le plan pour transformer automatiquement la base de code ;
  • corriger les problèmes de build et résoudre les erreurs de migration pendant la mise à niveau, en exécutant les validations de tests ;
  • valider l'application par rapport aux CVE connues après la mise à niveau ;
  • générer un résumé détaillé (modifications de fichiers, dépendances mises à jour, résultats des tests, problèmes restants) adapté aux PR ou aux logs CI.

Cette compétence fournit des conseils légers, étape par étape, et fonctionne sans le plugin ; le plugin est l'option plus puissante pour les mises à niveau volumineuses ou multi-étapes. C'est un plugin Microsoft séparé, qui ne fait pas partie des compétences de ce dépôt. Pour l'essayer (consultez le README du plugin pour le modèle recommandé) :

npm install -g @github/copilot
copilot plugin marketplace add microsoft/modernize-java
copilot plugin install modernize-java@modernize-java
copilot --agent modernize-java:modernize-java

Flux de travail

  1. Détectez les versions actuelle et cible. Lisez pom.xml (maven.compiler.release, java.version, toolchains), build.gradle* (java.toolchain, sourceCompatibility) et les fichiers CI. Ne supposez jamais une cible : demandez à l'utilisateur si elle n'est pas indiquée.
  2. Mettez à niveau un LTS à la fois (11 → 17 → 21 → 25). Buildez et exécutez les tests après chaque étape.
  3. Chargez uniquement le guide dont vous avez besoin dans le tableau ci-dessous. Ne les chargez pas tous.
  4. Mettez à jour le build en premier (compiler release, plugins, dépendances qui nécessitent des versions plus récentes), puis adoptez les fonctionnalités du langage de manière progressive dans de petits changements révisables.
  5. Vérifiez : ./mvnw verify ou ./gradlew build, et corrigez les avertissements de dépréciation et de suppression avant d'adopter les nouvelles fonctionnalités.
  6. Automatisez et vérifiez en amont. Utilisez OpenRewrite quand disponible (par exemple org.openrewrite.java.migrate.UpgradeToJava21) et récupérez toujours le guide officiel spécifique à la version avant de modifier ; examinez le diff généré.

Sources en amont (à lire avant la mise à niveau)

Consultez la page de la version cible ; préférez-la à cette compétence en cas de conflit. Liste complète avec pages de compatibilité des outils de build et agents : references/upstream-sources.md.

Guides par version

Mise à niveau Guide
Java 11 → 17 references/java-11-to-17.md
Java 17 → 21 references/java-17-to-21.md
Java 21 → 25 references/java-21-to-25.md

Règles

  • Préférez les refactorisations préservant le comportement ; ne modifiez pas les API publiques sauf demande explicite.
  • Détectez les frameworks du projet (Spring Boot, Quarkus, Jakarta EE) et vérifiez leur version Java minimum supportée avant d'augmenter la cible.
  • N'adoptez pas les fonctionnalités preview sauf si l'utilisateur en opt-in et que le build les active explicitement.
  • Pour les changements d'espace de noms de javax.* à jakarta.*, utilisez la compétence javax-to-jakarta-migration si elle est installée (gh skills install github/awesome-copilot javax-to-jakarta-migration) ; sinon faites la migration en ligne : mettez à jour les imports, les fichiers de service META-INF et les descripteurs XML, et bumez les dépendances vers les équivalents Jakarta EE 9+.
  • Si le plugin modernize-java est installé et que l'utilisateur souhaite une mise à niveau automatisée, déférez à celui-ci et utilisez cette compétence pour les guides par version et les garanties de passage de javax à jakarta.

Skills similaires