Comment obtenir la liste des dépendances d'un POT
est-il un outil qui permet de lister les tiers "packages" qui contiennent (troisième partie) classes référencées dans le POT ? Disons qu'il serait en mesure de reconnaître ce qui est "accueil" paquet de fichier JAR définition et il aurait l'impression d'une liste de noms entièrement qualifiés de tiers les classes jusqu'à la 3ème niveau qui ont été référencés dans le POT.
org.apache.commons
org.apache.maven
javax.servlet.jsp
org.eclipse.persistence
org.apache.jackrabbit
le but, c'est que j'ai besoin de trouver les dépendances maven pour que le fichier JAR et de le déployer comme un artefact maven.
- N'est-ce pas Maven censé pour exactement cet effet?
- Imaginez que vous avez une Fourmi en fonction du projet et vous souhaitez déployer à repository maven pour quelqu'un d'autre pour l'utiliser comme une dépendance. Vous devez spécifier ses dépendances transitives dans le pom définition. J'ai besoin d'une façon qui aurait facilité à les trouver
- Edit: je sais comment le faire manuellement, à dépenser beaucoup d'efforts. Automatisé dépendance au de résolution devrait être théoriquement possible, toutes les informations sont dans le .jar et dans le repository Maven déjà.
- Il doit y avoir quelque chose pour ça, c'est vraiment bizarre que quelqu'un de sonatype ou de la communauté n'a pas fait quoi que ce soit pour une telle chose
- Mais comment voulez-vous gérer les versions dans votre cas ? C'est ce que maven est pour , N'est-ce pas !
- Découvrez le copier-dépendances but dans le maven-dépendance-plugin.
Vous devez vous connecter pour publier un commentaire.
JarAnalyzer:
Il est un nouvel outil depuis le JDK 8:
jdeps
https://wiki.openjdk.java.net/display/JDK8/Java+Dépendance+Analyse+Outil
Vous pouvez effectuer les opérations suivantes (si c'est un projet maven):
Il montre les dépendances transitives ainsi, il est très utile pour déboguer les conflits de dépendance.
Si vous utilisez maven (ce que j'ai compris), vous pouvez simplement utiliser Dépendance Maven plugin.
Vous devez d'abord écrire une base pom.xml avec tous vos pots, vous pouvez copier cet exemple (j'utilise hibernate à titre d'exemple), et les remplacer vos pots :
puis ouvrir un terminal, aller dans le dossier contenant de la pom.xml ci-dessus et lancez cette commande :
mvn dependency:tree
cela permettra d'imprimer une liste de dépendances...
ou si vous souhaitez télécharger et copier dans un dossier toutes les dépendances exécutez la commande suivante :
mvn dependency:copier-dépendances
vous trouverez tous vos dépendances dans le dossier ./cible/dépendances
Tattleltale est un outil de JBoss qui fait ce
tattletale.jboss.org/
Ma première pensée a été que vous pouvez faire cela en utilisant un chargeur de classe pour parcourir tous les fichiers de classe dans le pot et utiliser la réflexion pour analyser chacun de leurs dépendances. Cependant, la Classe la classe n'a pas une méthode qui vous indique cette information. Donc, la prochaine pensée serait d'utiliser une sorte de pseudo-code binaire de l'analyseur (asm par exemple) pour sortir tous référencés classes à partir de la compilation de la classe.
En supposant que vous pourriez obtenir cette information, la prochaine question sera à la trace les classes pour les pots. En un sens, ce serait la partie la plus facile, parce que tout ce que vous devez faire est de créer un chargeur de classe pour chaque bocal dans votre repo maven, ou répertoire ou partout où les pots, puis de demander à chacun à son tour si elle contenait la classe spécifique.
La faille dans ce raisonnement c'est qu'une classe java (source brut ou compilé) ne détaille pas où obtenir de la classe importée à partir d'. Donc, si vous avez deux classes avec le même package et le nom (qui arrive plus souvent que vous ne le pensez), alors vous seriez incapable de dire qui à utiliser.
Même java il suppose que le premier qu'il trouve dans le chemin de classe est la bonne et lève une exception si il s'avère incorrecte (MethodNotFoundException). Donc, sauf si vous allez à analyser le bytecode de comprendre quelles sont les méthodes de chaque classe sont appelés et puis comparer avec les classes dans votre chemin de classe, vous ne serez pas en mesure d'être correct.
EN bref, il est probablement possible de faire ce que vous voulez, mais ce sera probablement très difficile et prend du temps.
La façon dont j'ai l'habitude de régler ce problème est de simplement tirer jusqu'à la classe dans le code de test et continuer à ajouter des dépendances jusqu'à ce que je peux le faire pour exécuter chaque méthode, je suis intéressé.
Si le vôtre est un maven projet basé
Regardez le lien ci-dessous
http://maven.apache.org/plugins/maven-dependency-plugin/build-classpath-mojo.html
Peut être dans votre cas
Ce pourrait être une alternative pour cet outil. Mais il n'est pas référencé classes. Le dernier numéro détermine "ensemble".
Problème, c'est que de cette façon il est impossible d'obtenir référencé classes de définitions de classe. Donc, la seule façon possible semble être le faire en JAVA.
La question est donc: Est-il un outil Java qui peut le faire ?
EDIT:
J'ai trouvé ce dont j'avais besoin : M2eclipse a une fonctionnalité appelée Classe de recherche
Dans les dépôts maven vue, cliquez droit sur un référentiel et d'activer l'index complet
Puis Naviguez > type Ouvert depuis maven - là, vous pouvez regarder à travers tous les objets disponibles sur la base de package java convention
autolinker