-
Compilation et JAR
Bonjour à tous,
J'ai créé un projet dans Eclipse et configuré le Build path pour inclure un deuxième projet dont certains packages et classes (pas la totalité) sont nécessaires au projet principal.
Lors de l'exportation du fichier .jar exécutable (menu Export.../Java/Runnable JAR file), la totalité des packages et classes de mon projet inclus sont exportés. Ce qui en résulte que le fichier final est très volumineux. Y a t'il une façon de faire pour inclure uniquement les classes et packages utilisés dans mon projet et pas la totalité ?
Merci d'avance pour votre aide !
-
Si tu ne veux exporter que certaines classes de ton sous-projet, cela veut dire qu'ils possèdent des classes inutiles, puisque pas utilisées.
Logiquement, tu es censé utiliser toutes les classes que tu crées à différents endroits de ton programme, donc tu as une dépendance sur ces classes. Si une telle dépendance n'existe pas, c'est donc bel et bien que tu possèdes des classes inutiles. Et que tu peux supprimer.
Une solution serait de scinder ton second projet en plusieurs sous-projets et de n'importer que ceux que tu utilises, mais il faut être sur pour cela que tu puisses découper un projet en deux, sans aucunes dépendances entre les deux.
Ton objectif est de couper les dépendances entre les classes pour créer des sous-projets Eclipse que tu peux importer librement. Ainsi, tu pourras réduire la taille de ton JAR.
-
Merci pour ta réponse.
Mais je crois que je me suis mal exprimé.
En fait, mon second projet (sous-projet inclus) est une sorte de « librairie » de composants graphiques (Swing) que j'ai créé et dont je peux me servir à souhait dans différents projets.
Ce que je souhaite, c'est n'inclure dans le fichier .jar exécutable uniquement les classes des composants graphiques utilisés dans mon application et pas toutes puisqu'une grande partie ne sont pas utilisées dans le projet en question.
N'y aurait-il pas un « compilateur » qui n'inclurait que les classes utilisées (et leurs dépendances correspondantes) en laissant de côté toutes les classes inutilisées ?
Ainsi, pas besoin de découper ma librairie lorsque je souhaite l'utiliser dans un projet...
-
Le plus simple pour la gestion de dépendances entre projets est d'utiliser un outil comme Apache Maven.
En soit, tu peux compiler ce que tu veux à la main, et choisir de n'exporter que ce que tu souhaites. Maintenant, avec des IDE, cela devient plus "compliqué". Si tu utilises Eclipse, qui par défaut compile tout automatiquement, tu peux désactiver cette option dans "Project", si je me souviens bien. Puis compiler l'ensemble de ta bibliothèque, et n'inclure que les fichiers que tu désires.
Le problème vient du fait que tu utilises un IDE. Soit tu peux créer un nouveau sous-projet pour splitter ta lib, soit tu n'inclus, à la main, que les classes que tu désires dans ton JAR.
Personnellement, je ne vois pas d'autres solutions.
-
Je vais me pencher sur Maven, souvent entendu parler mais jamais essayé. Pour le moment, j'utilise Ant mais sans en connaître tous les rouages.
J'utilise en effet Eclipse. Mais je ne vois pas vraiment que tu entends par "compiler l'ensemble de ta bibliothèque, et n'inclure que les fichiers que tu désires". Comment fais-tu ? Je devrais normalement obtenir un .jar contenant la totalité de la bibliothèque, non ? Dois-je supprimer mon sous-projet de l'onglet "Projects" du Build path ? Et où dois-je spécifier les classes à inclure lors de la compilation ?
Merci d'avance pour ta réponse !
-
Je commence finalement à mettre la main à Maven en remplacement de Ant. Je vais voir...
Sinon, il semblerait aussi qu'un obfuscateur tel que Proguard ne conserve que les classes utilisées et non la totalité de la librairie.