IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Patcher un projet java avec un autre possible ?


Sujet :

avec Java

  1. #1
    Membre actif
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 98
    Points : 206
    Points
    206
    Par défaut Patcher un projet java avec un autre possible ?
    Bonjour,

    j'ai maintenant une bonne base en java mais je n'ai absolument aucune idée de comment surmonter ce problème :

    J'utilise un projet java open - source (Bukkit www.bukkit.org) auquel je rajoute des fonctionnalités pour mes besoins.

    Je modifie donc les classes, je compile c'est tout bon.

    Hors a chaque montée de version de Bukkit, je suis à nouveau contraint de remodifier les classes systématiquement... est-ce qu'il n'y a pas une manière de faire, un outils ou quelque chose qui pourrait accélérer ce processus d'adaptation ?

    Je suis ouvert à toute aide possible, je ne sais même pas comment ce genre de chose s'appelle :s j'ai fais des recherche sur "Patch en java" mais pas trouvé grand chose qui satisfaisait mes attentes.

    Merci de m'avoir lu et j'espère avoir quelques retours ! Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    tu fais toutes tes modifs, tu utilise un outils de type diff pour faire un différentiel entre ta version et la base non touchée. Pour passer à la version 2, il "suffira" de tenter d'appliquer ce diff à la version 2 et de faire les corrections nécessaires.

  3. #3
    Membre actif
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 98
    Points : 206
    Points
    206
    Par défaut
    Merci pour ta réponse tchize !

    Pour les outils de type diff dont tu parles est-ce que tu fais allusion à des outils style SVN, GIT, Mercurial ou quelque chose d'autre ?

    Si oui :
    J'utilise actuellement mercurial mais pour faire mes modifs j'ai du importer le projet de base dedans donc presque impossible de savoir a quel endroit j'ai fait des modifications. (J'ai fait une petite doc pour que je sache ou j'ai fais les modifs mais bon..).

    Comment faire pour que seules mes modifs soient envoyées au repo et pas le projet de base ?

    Si non :
    Est-ce que tu parles plutot de http://www.incava.org/projects/diffj/ par exemple ?

    Merci encore

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Je parlais de http://fr.wikipedia.org/wiki/Diff

    De toutes façons, tu as deux manières possibles de travailler.

    Option 1:

    tu fais toutes tes modifs sur la V1 officielle, tu crée à partir de là un "patch" P1, ensuite tu essaie d'appliquer ce patch à la V2 officielle pour passer à la version suivante


    Option 2:

    tu fais toutes tes modifs. Quand une version V2 est disponible, tu crée un patch V1 -> V2 en utilisant les versions officielles, et tu tente d'appliquer ce patch à ton code.

    Je ne connais pas mercurial donc je ne peux pas t'aider sur ce qui est disponible en base dedans.

  5. #5
    Membre actif
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 98
    Points : 206
    Points
    206
    Par défaut
    (pour diff jdiff s'inspire de diff d'après ce que j'ai pu voir)

    Okay et si je fais ceci est-ce que c'est "sale" :

    je crée un dossier qui contient la même arborescence de package que le projet réel.

    Projet Bukkit :
    src/org/bukkit/entity/HumanEntity.java

    Projet Patch :
    src/org/bukkit/entity/HumanEntity.java (classe copiée de HumanEntity avec modification du code)


    Ensuite je fais un petit jar qui remplace les classes originales par celles de mon dossier.

    Et je fais en sorte que pour chaque fichier de mon dossier :

    if(classDuPatch exists in Bukkit)
    -> rename Bukkitclass to classNameOrig.class
    -> copy classDuPatch in Bukkit
    -> add "extends classNameOrig.class" to classDuPatch


    Si la classe originale doit être remplacée -> renomme en nomClassOrig.java
    Et j'ajoute dans ma classe modifiée "extends nomClassOrig.java"

    Du coup j'ai mes différences clairement marquées puisque j'ai mes classes modifiées dans un dossier spécial et lorsque je "patch" ca fusionne.

    Le seul problème qui resterait serait pour les enum qui ne sont pas "héritables" ...

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Et ton deuxième problème est que toute modification que tu voudrais faire ne serait pas nécessairement faisable par héritage.
    Et ton troisième est que, de toutes façons, ta procédure va chier dans la colle si des classes sont supprimées, des hierarchies retravaillées, des noms de package changé d'une version A à une version B

    Tu n'arrivera jamais à automatiser à 100% ta gestion des changements. Et pas besoin de faire un programme pour ça, les ide on déjà de quoi faire des diff et, si tu veux le faire sans l'ide, des outils en ligne de commande existent.

    Ce qu'il te faut c'est simplement un peu de rigueur et te décider sur dans quel sens tu va travailler. Si tu applique les changement V1=> V2 sur ton code, soit tu applique tes changements sur la V2.

  7. #7
    Membre actif
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2011
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 98
    Points : 206
    Points
    206
    Par défaut
    Okay merci ^^ (Sympa l'expression connaissais pas)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. compilation projet JAVA avec ANT
    Par osman.amine dans le forum Langage
    Réponses: 3
    Dernier message: 26/04/2010, 09h18
  2. Importer diagramme UML dans un projet Java (avec Netbeans 6.5.1)
    Par normand79 dans le forum NetBeans Platform
    Réponses: 1
    Dernier message: 30/11/2009, 12h57
  3. deployer un projet java avec ejb3 et jboss sous eclipse
    Par flamant dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 17/02/2009, 08h48
  4. Réponses: 3
    Dernier message: 10/02/2009, 18h50
  5. Projet lancé avec une autre application..COMMENT?
    Par zentaf dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 11/04/2007, 09h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo