2008-10-25 5 views
2

Je rencontre cet obstacle lorsque mon débogueur entre dans un classfile sans source correspondante. Trouver il est souvent difficile:Est-il possible de "joindre la source" plus facilement pour les bibliothèques Java populaires?

  • Vous devez rechercher le site hébergeant le projet respectif, et trouver sa page `` source de téléchargement « » (par exemple, la dernière fois que je cherchai pour l'API JPA, et il m'a fallu des heures pour obtenir les sources). Ou, vous devrez peut-être vérifier le contrôle de révision.

  • Vous devez connaître la version exacte que vous utilisez. Dans le cas contraire le débogueur pourrait l'étape dans les commentaires et les lignes vides :)

  • Il n'y a pas de convention pour le code source d'emballage — certains projets comprennent dans le pot lui-même; certains fournissent un fichier zip séparé; d'autres le placer dans un sous-dossier src/ dans le zip.

Je sais que Maven a la capacité de télécharger la source de son dépôt et y compris dans les chemins src lorsqu'un fichier de configuration IDE est généré. Mais Le repo de Maven est si pauvre en termes de contenu — peu de bibliothèques ont effectivement leur source téléchargée.

Pourquoi est-ce si compliqué quand on peut le rendre simple? Nous pourrions avoir un dépôt central qui relie un classfile (ou un hash de celui-ci) au fichier source depuis lequel il a été compilé (ou un lien vers celui-ci). Peut-être un repo plutôt énorme, mais assez simplement structuré. Un plugin IDE pourrait l'interroger pour aller chercher ce qui est nécessaire automatiquement.

Avez-vous, les gars, vécu la même chose?

Comment obtenir les sources à attacher?

Répondre

0

cela peut être compliqué mais cela vaut l'effort initial.

-je le faire de la façon suivante: dans mon répertoire de projet, j'ai trois répertoires majeurs,

  • src (mes propres)
  • lib
  • Suppl (sources/javadocs quand aucune source existe)

J'ai mis en suppl un fichier zip par bibliothèque, contenant les sources. dans intellij cela me donne non seulement des superpuissances de débogueur, mais aussi des javadocs.

vous avez raison, l'obtention des sources est une douleur. parfois les sources sont livrées dans le fichier .jar de la lib, parfois sous forme de téléchargement séparé (mon préféré) et parfois je dois créer un cvs/svn dir séparé où je peux vérifier les sources. J'ai généralement besoin de les ré-emballer comme je les aime, même si fourni dans un zip.

Je suis sceptique quant à maven. Je n'aime tout simplement pas remettre mes décisions sur le choix des librairies pour un programme.

0

nous faisons quelque chose de similaire à Andreas. Notre répertoire lib a des sous-répertoires qui se catégorisent davantage. Un tel sous-répertoire est source ou debug qui a le fichier JAR/ZIP de tous les fichiers jars que nous voulons déboguer. Faites-le une fois et vous êtes bon. Nous utilisons un référentiel IVY pour les pots et les pots sources.

1

Je n'ai pas vu une solution satisfaisante moi-même.

J'ai tendance à rouler mon propre repo, sans Maven (Maven va bien, mais ça ne clique pas avec moi). Je cours quelque chose de semblable au système de ports de BSD, c'est-à-dire, un grand arbre structuré qui contient peu de fichiers de construction d'Ant. Ces fichiers de construction extraient la source d'un projet, tirent ses dépendances d'ailleurs dans l'arbre et le construisent (ce sont pour les projets que je veux construire - ie, le mien) ou tirer des binaires d'un autre endroit (qui peut être externe source ou mon propre référentiel binaires).

Le système pourrait facilement être étendu pour tirer des bocaux src, mais je le fais manuellement maintenant.

2

Les deux m2eclipse et IDEA téléchargeront les sources et javadocs pour toutes les dépendances. Les sources de m2eclipse peuvent être téléchargées en cliquant avec le bouton droit sur une dépendance (ou le projet entier si vous voulez toutes les sources) et en cliquant sur Maven-> Télécharger les sources.

download sources screenshot

Sur les versions les plus récentes de m2eclipse vous pouvez également télécharger automatiquement les sources en allant Fenêtre-> Préférences ...-> Maven, puis en sélectionnant l'option "Télécharger Sources artefacts". Lorsque vous ouvrez un type dans un jar de dépendances pour lequel aucune source n'est actuellement disponible, Maven télécharge les sources en arrière-plan et met à jour la pièce jointe source en arrière-plan.

Maven preferences screenshot

Questions connexes