La bonne façon de traiter avec les bibliothèques externes en java (à l'aide d'eclipse)
C'est en quelque sorte un suivi de question sans réponse de la mine (lien) qui excalated au cours des dernières semaines, et maintenant il est venu à un point où je ne peux pas vraiment développer plus...
Donc voici l'affaire; j'ai plus de mathématiques et de l'ingénierie de fond que de purs CS, donc je n'ai pas beaucoup d'expérience avec une bonne/grande échelle de développement de logiciels, mais plutôt des scripts et des algorithmes. Maintenant que je suis en train de travailler sur un grand projet, sur mon propre, je suis confus à certains aspects du développement. L'un d'eux étant la manipulation des bibliothèques/dépendances
J'ai d'abord créé un dossier appelé lib
sous mon dossier de projet (dans le workspace Eclipse) et de copier mon bibliothèques externes et puis il y a ajoutés à la build path. Cependant, plus tard, j'ai besoin d'un peu d'autres trucs comme JCommons
, JFreeChart
, Apache Commons Math
etc.. Selon les instructions de ces bibliothèques peuvent/doivent être inclus en tant qu'utilisateur des bibliothèques, permettant au développeur de, voir la documentation et le code source à partir de l'intérieur de l'IDE (comme Eclipse). J'ai eu droit jusqu'à présent, je l'espère...
Alors où est le problème? Et bien d'abord, il est apparu que l'utilisateur bibliothèques mentionnées ci-dessus ne sont pas inclus sur le SVN copie du projet, ce qui signifie que mes collègues qui voulais tester mon projet ne pouvait pas le faire, juste par le simple fait d'acquérir le projet à partir de SVN. Maintenant, la deuxième phase du problème non quand j'ai changé mon poste de travail, au travail, j'ai voulu importer mon projet dans Eclipse à partir de ma sauvegarde, mais alors tout à l'exception de ceux de l'utilisateur des bibliothèques sont là. Pour rendre les choses plus compliquées, quand ce logiciel est fait, il sera mis en œuvre sur un serveur de sorte qu'il serait le meilleur absolument si tout pouvait être emballé dans une seule bibliothèque ou encore mieux, un praticable jar
fichier.
J'ai déjà été conseillé de prendre un coup d'oeil à Maven, ou de Lierre, mais ma compréhension initiale après vérification de leur les deux, c'est qu'ils sont utilisés depuis le début, et la plupart du temps pour des projets plus complexes. Honnêtement, je suis complètement perplexe quant à la façon dont je suis censé gérer mes dépendances. Des idées?
(Désolé pour le garder longtemps, mais j'ai pensé mieux compléter et à long alors l'insuffisance de l'information)
EDIT: j'ai réussi à régler le problème; le problème est apparemment originaire de la simple fait que l'éclipse n'est pas la copie de toutes les ressources à un seul endroit, et les instructions d'installation pour certaines bibliothèques n'a pas vraiment de vous avertir sur la façon de gérer les bibliothèques de la meilleure façon.
Merci à tous ceux qui ont pris de leur temps pour essayer de m'aider. Je vais dans l'air du temps de plus en plus dans des projets comme Maven et le Lierre, c'est certainement des choses intéressantes. Cependant pour l'instant j'ai juste besoin de revenir sur le logiciel en cours d'exécution, été confrontées à de nouveaux trucs pour trop longtemps...:)
OriginalL'auteur posdef | 2010-09-10
Vous devez vous connecter pour publier un commentaire.
Au risque de commettre un acte d'hérésie, je dirais Maven et wot-ne sont pas exagéré ici. Vous avez besoin de vos dépendances dans votre projet SVN, simple que cela. Vous avez ajouté votre dossier lib de votre construction de chemin d'accès dans Eclipse, et c'est très bien. Mais à moins que vous ajoutez plus précisément le contenu du dossier lib de votre projet (comme Fred décrit), ces éléments ne seront pas admissibles pour s'engageant à SVN -- ils vont tout simplement être référencé dans votre set-up du classpath. C'est bon pour vous, pas pour tout le monde à la recherche de visiter votre projet (comme vous l'avez trouvé).
J'apprécie que l'on peut avoir des discussions interminables sur les meilleures pratiques, la validité de commettre des bibliothèques tierces pour le contrôle de version, et ainsi de suite et ainsi de suite... mais je pense que la plupart des gens ont du travail à faire 😉
Oui. Vous pouvez également ajouter de la documentation et de la source (en bocal) au projet SVN, si vous trouverez qu'utile. En cliquant-droit sur le Référencés Bibliothèques de l'entrée de la bibliothèque, vous devez obtenir la possibilité de définir l'emplacement de la javadoc et/ou de la source des bibliothèques sont situées.
Je suis en désaccord. Maven est un ajustement pour un projet de toute taille. Il vous suffit d'utiliser la plus simple des fonctions de gestion de la dépendance et
mvn package
. Prouvé par l'expérience prend 2 minutes pour l'installation.maven semble me donner plus et plus de défis à relever, tels que la recherche et l'ajout de bibliothèques qui ne sont pas inclus dans le moteur de recherche. Je suis debout derrière mon original de la déclaration; maven n'est pas bien documentée. Comme pour tout ajout de la bibliothèques pour le SVN, je n'arrive pas à utiliser l'Utilisateur "Bibliothèques" si elles sont dans mon dossier lib, j'ressource pas trouvé d'erreur qui est vraiment bizarre. J'ai suivi les instructions à la lettre: sourceforge.net/projects/jfreechart/files/2.%20Documentation/...
Si ma mémoire est bonne (n'ont pas IDE ouverte en ce moment), j'ai simplement glisser externe les fichiers jar dans mon dossier lib dans Eclipse, puis configurer le build path (“Add JAR bouton” >> alors ouvrir un projet en résultant dialogbox) réellement les ramasser.
OriginalL'auteur Ben
Investir un peu de temps pour apprendre à créer un projet à l'aide de Maven. Il a juste fait beaucoup de choses pour vous que c'est incroyable.
Ne vous inquiétez pas. Refaire une chose à ne pas le rendre plus difficile. En fait, c'est tout à fait différente, et la deuxième fois, vous allez faire beaucoup, beaucoup mieux. Il n'y a rien à perdre, il suffit de créer un projet à l'aide de maven créer artifactory plugin et de copier le code existant dans les lieux que maven s'attend à trouver.
OriginalL'auteur Boris Pavlović
Bon, je pense que cela peut être résolu..
Dans Eclipse en java build path écran, il y a aussi une importation pot bibliothèques de choix qui vous permet de choisir le projet le dossier lib..en fait il y a un choix marqué dossier, je pense..
L'autre chose étant donné qu'il sera déployé sur un serveur, vous devez avoir tous les jar dans le dossier lib.
Il y a une fourmi technique où vous signez pour une classe ou une propriété dans le pot pour vérifier sa le bon pot à importer dans le dossier lib avant de procéder à la séquence de la construction.. faire une recherche Google et vous trouverez les posts à ce sujet..
OriginalL'auteur Fred Grott
Les trois options sont les suivantes:
Mise à jour: quelques mots expliquant maven idéologie:
pom.xml
vous définissez plusieurs<dependency>
balises, avec le nom et la version de maven récupère tous les pots de la des dépôts distants. Il extrait également des pots sur lesquels vos dépendances dépendent (dépendances transitives). Ainsi, vous ne finissent pas avoirNoClassDefFoundException
.Pour moi, c'est extrêmement simple: vous définissez ce vous avez besoin, et maven décide de la façon de le chercher, et comment l'ajouter à votre classpath.
eh bien, oui, vous avez à "penser le maven chemin", mais il n'est pas loin d'être les "meilleures pratiques", donc .. 🙂
Je sens que je vais être d'accord avec Torbjörn, ce qui est facile à utiliser est très subjective, en ce qui concerne l'un de l'arrière-plan, l'expérience et les compétences. J'ai essayé de donner un sens de la refcard, et la triche donné ci-dessus ainsi que de la documentation sur la page d'accueil, mais ne peut pas dire que j'ai fait beaucoup de progrès, même si la langue utilisée est l'anglais courant... Ce que je pense que j'ai besoin est de participer activement et de manière intuitive voir les bibliothèques sont nécessaires, et où ils sont. Ce serait cool de les garder dans un endroit unique, automatiquement, si possible..
+1 pour un bien nécessaire et bien écrit explication. Merci!!!! Je vais essayer de creuser un peu plus loin avec maven. Juste une petite chose: j'ai donc besoin de créer et de définir un projet maven, quel est le rapport à mon projet eclipse?
Vous n'avez pas besoin d'un nouveau projet. Il suffit d'ajouter le pom.xml (à la racine), installez le plugin eclipse m2eclipse, et cliquez-droit sur le projet en choisissant "Maven > Activer la gestion de la dépendance". Vous n'avez qu'à mettre vos sources java dans src/main/java 🙂
OriginalL'auteur Bozho
Vous n'avez pas à avoir un projet complexe ou un nouveau projet pour bénéficier de Maven et je voudrais donc prendre les conseils que vous avez déjà été donné d'essayer et de lui donner un aller.
Si vous ne voulez vraiment pas, alors vous devriez vraiment vérifier vos bibliothèques dans le SVN avec votre code. Si une version de votre code s'appuie sur une bibliothèque spécifique à un certain point dans le temps, alors il y a un contrat là et en n'incluant pas les bibliothèques dans SVN, vous êtes à la rupture de ce contrat - quelque chose que vous avez déjà constaté que vous ne pouvez pas recréer votre application à partir de zéro ailleurs.
Comme pour les emballer dans un seul JAR - c'est possible avec Ant, mais pourquoi auriez-vous besoin?
oh, et la raison pour emballer le tout à un seul BOCAL; eh bien, nous sommes principalement pour les rendre disponibles pour une utilisation publique et, pour cette raison, je tiens à garder les choses simples et propres. L'utilisateur trouve le seul fichier java qu'ils veulent obtenir, qui tient tout, de télécharger et d'utiliser le logiciel sans avoir besoin de configurer quoi que ce soit.
OriginalL'auteur tddmonkey
Au sein de notre entreprise, nous trouvons un Dépôt SVN pour des bibliothèques tierces, et nous avons une entreprise de règle que, sur chaque station de travail de développement de ce référentiel est sorti à l'C:\dev. Donc, tous, de la a la des bibliothèques dans le bon endroit et les projets fonctionne très bien.
En gros, oui.
OriginalL'auteur huo73