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

Maven Java Discussion :

Fichier de configuration / ressources extérieurs aux jars


Sujet :

Maven Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Fichier de configuration / ressources extérieurs aux jars
    Bonjour à tous,

    Après avoir lu pas mal de documentations / forums sur ce sujet, je ne trouve pas réellement les réponses à mes questions concernant la non intégration des fichiers de configuration / de resources dans les jars.

    Essayant actuellement de convertir mon projet de jeu vidéo sous Maven, je suis confronté aux problèmes suivants :
    1. J'ai de nombreuses ressources externes : polices, modèles 3D, sons, textures etc.... que je ne souhaite absolument pas intégrés dans des fichiers jars lors du packaging par Maven, je souhaiterais simplement copier ces fichiers dans le répertoire target. Dois je utilise le répertoire src/main/resources ?
    2. J'ai exactement le même problème avec de nombreux fichiers de configuration : fichier XML des niveaux, des options, du paramètrage des logs, etc... Dois je utilise le répertoire src/main/config ?
    3. Comment dois je faire appel à ces ressources à partir de mes classes Java pour que ce soit compatible et portable avant / après packaging par Maven ? Dans l'IDE que j'utilise (Eclipse), pour le moment je fait un new File("./src/main/config/level-1.xml") sachant que le main se lance à la racine du projet. Il faudrait que cela fonctionne également après le build Maven....


    Que pouvez vous me conseiller afin de résoudre le plus efficacement ces problèmes ?
    Merci par avance pour votre aide.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Pas de réponse....
    Aucune idée sur mon problème ?....

  3. #3
    Membre confirmé

    Inscrit en
    Septembre 2006
    Messages
    466
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 466
    Points : 515
    Points
    515
    Par défaut
    Bonjour,

    A vrai dire ton besoin n'est pas très claire. Pourquoi ne souhaites-tu pas mettre tes fichiers dans ton jar et les avoir dans le répertoire target ?

    Si tu as besoin de les récupérer dans ton application, il faut éviter de passer par un chemin système style ./src/main/config/level-1.xml mais plutôt de passer par le classloader. Du coup, il faut que tes fichiers soit sous target/classes et donc les mettre dans src/main/resources.

    Si tu ne les veux pas dans ton artefact alors il faut que tu configures le plugin maven-jar-plugin afin de les exclure.

    Il y a d'autres solutions comme passer par un artefact de ressources mais cela dépend de ton besoin.

    Rémy

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Bonjour et merci Rémy pour ta réponse,

    Voici de plus amples explications sur mon besoin :

    Premier point : les fichiers de ressources d'un jeu vidéo sont assez volumineux (plusieurs mégaoctets par images, par musique, par modèle 3D etc....).
    Si je les ajoute dans mon jar, celui ci pourrait potentiellement faire plusieurs centaines de méga (ceci n'est évidemment pas forcément un problème aujourd'hui)
    En fait, je souhaites que les ressources de mon jeu puissent facilement être customizable par des personnes tierces, étant donné que je suis à 100% open source.

    Ceci développera le jeu et permettra très facilement aux contributeurs potentiels :
    - de créer des sons et de les tester à la volée (en les copiant seulement dans le répertoire "audio")
    - de créer des nouveaux graphismes et de les tester à la volée (en les copiant seulement dans le répertoire "image")
    - de créer des nouvelles traductions en modifiant les fichiers properties des langages
    - d'ajouter et de créer des nouveaux niveaux (en les copiant seulement dans le répertoire "niveau")

    sans avoir à décompresser le jar, le recompresser etc.....

    Conceptuellement parlant, je ne pense pas que le packaging unique pour un jeu soit correct. Il ne suffit qu'a regarder les jeux professionnels.

    Deuxième point : le répertoire target. Pour être honnête, je ne suis pas encore super familier avec Maven, mais je vais surement interfacer Maven avec un script Ant qui me créer l'installeur de mon jeu, c'est à dire que .exe avec les étapes "suivant... suivant...suivant". Je pense que cela sera plus facile pour lui d'avoir tous les fichiers du jeu dans le même répertoire, par exemple target. Bien évidemment, le script Ant peut surement être adapté pour aller piocher dans de multiples répertoires, je souhaitais seulement avoir votre avis sur ce point. Suivants ton hypothèse, si je ne veut pas les mettre dans target dois je tout de même utiliser le répertoire src/main/resources ?

    Dernier point : Connaissez vous un nom d'artefact de ressources, afin que j'y jette un oeil, au cas ou ?

    Merci encore pour vos éclaircissements.

  5. #5
    Membre confirmé

    Inscrit en
    Septembre 2006
    Messages
    466
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 466
    Points : 515
    Points
    515
    Par défaut
    Bonjour,

    A vrai dire il est difficile de répondre comme cela. Il faut encore quelques précisions.

    De ce que je comprends tu as plus ou moins trois acteurs : l'équipe qui développe le jeux, des développeurs tierces qui peuvent l'étendre (source, images, audios, fichiers de configurations...) et l'utilisateur final.

    Il faut bien que tu distingues la phase de développement (comment optimiser le build pour avoir du déploiement à chaud) et la phase de packaging (comprendre à qui est destiné le livrable et comment il va être exploité).

    Ce que je n'ai pas bien compris c'est comment les développeurs tierces interviennent dans le cycle de développement. Est-ce qu'ils interviennent directement sur ton gestionnaire de configuration, c-à-d qu'ils font des commits sur le même référentiel que le tien ou est-ce que tu souhaites leur livrer ton source (par exemple dans un artfact maven) et qu'ils puissent l'étendre ?

    Il faut aussi différencier le fait que chacun produise son propre exécutable (sorte de fork) ou est-ce qu'ils ne font qu'étendre la partie ressource (ils produisent juste un nouvel artefact pour les ressources qui sera ensuite décompressé après l'installation de ton exécutable) ?

    Rémy

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Effectivement, tu soulève un point important.

    Je pense qu'il peut y avoir deux types de contributeurs :

    - développeurs actif qui auront accès aux gestionnaire de configuration et qui pourront commiter directement du code ou des ressources

    - contributeurs temporaires qui installerons le jeu comme un utilisateur final et qui souhaiterons ajouter / tester / changer certaines ressources du jeu ou modifier directement les fichiers de configurations.

    C'est en raison des contributeurs temporaires que je souhaite que le jeu soit installé dans une arborescence distincte et non pas dans un jar unique, avec une séparation claire entre le code (fichier jar qui est uniquement maintenu par l'équipe de développement) et les fichiers de ressources et de configuration qui peuvent être potentiellement et facilement modifiés par les gens utilisant le jeu

  7. #7
    Membre confirmé

    Inscrit en
    Septembre 2006
    Messages
    466
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 466
    Points : 515
    Points
    515
    Par défaut
    Si ta question ne concerne que les contributeurs temporaires alors, de ce que j'ai compris, ils modifient ton projet une fois installé sur leur environnement et ne remontent pas leur modification sur ton projet. Donc cela intervient après la phase de livraison de ton projet.

    Du coup, il faut prévoir une sorte d'installer (le plus simple étant un zip) qui permet d'installer ton projet avec l'arborescence souhaité. Tu peux par exemple regarder du côté du plugin assembly pour générer une archive (zip par exemple) qui pourra contenir cette arborescence.

    Ils pourront ainsi personnaliser ton projet comme ils veulent et recréer une nouvelle archive.

    Rémy

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Merci beaucoup Rémy, je pense effectivement que c'est exactement ce dont j'ai besoin. Je ne connaissais pas ce plugin mais cela semble correspondre à ce que je souhaites faire. Je vais tester tout ca.

  9. #9
    Membre confirmé

    Inscrit en
    Septembre 2006
    Messages
    466
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 466
    Points : 515
    Points
    515
    Par défaut
    De rien. N'hésite pas à faire un retour après tes tests.

    Rémy

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

Discussions similaires

  1. Utiliser le fichier de configuration dans une librairie jar
    Par Palsajicoco dans le forum Hibernate
    Réponses: 0
    Dernier message: 16/05/2011, 13h32
  2. Réponses: 4
    Dernier message: 13/12/2008, 14h13
  3. Réponses: 0
    Dernier message: 04/08/2008, 16h07
  4. Comment mettre à l'extérieur du .jar un fichier properties ?
    Par KnucklesTheEchidna dans le forum Applets
    Réponses: 5
    Dernier message: 18/01/2008, 18h40
  5. Fichier ressource correspondant aux langues
    Par Seth77 dans le forum C#
    Réponses: 1
    Dernier message: 11/08/2007, 23h41

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