2017-01-12 8 views
0

J'ai un projet maven avec plusieurs dépendances développées en interne par mon équipe. J'ai besoin d'informations contenues dans les fichiers MANIFEST.mf de ces dépendances au moment de la construction de mon projet actuel.Accéder aux fichiers MANIFEST.MF des dépendances de projet en utilisant maven

Pour être clair. Je ne veux pas obtenir d'informations de mon propre fichier MANIFEST.mf (celui du projet que je construis). Je veux accéder aux informations contenues dans les fichiers MANIFEST.mf des dépendances de mon projet au moment de la construction.

J'ai construit un plugin maven où je peux vérifier l'arborescence des dépendances et récupérer des informations de base sur les dépendances, mais je n'ai pas trouvé une manière directe d'accéder aux fichiers MANIFEST.mf.

Avez-vous des indices sur la façon dont je peux y accéder (par programmation)?

Merci!

+0

Avez-vous vérifié cette http: // stackoverflow. com/questions/1272648/lecture-mon-propre-pots-manifeste? –

+0

Copie possible de [Lire le manifeste de mon propre Jar] (http://stackoverflow.com/questions/1272648/reading-my-own-jars-manifest) –

+0

Si vous utilisez vraiment un projet Maven, vous n'avez pas besoin d'accéder au Fichier MANIFEST.MF pour les dépendances car elles se trouvent dans le fichier pom.xml. Mais il semble que vous travaillez dans le projet OSGi? En dehors de cela, je voudrais savoir quel est le but de votre plugin? – khmarbaise

Répondre

1

Utilisez le fichier de l'artefact pour créer un https://docs.oracle.com/javase/8/docs/api/java/util/jar/JarFile.html, qui vous donne accès au Manifest

+0

Cela semble pointer dans la bonne direction. Cependant, comment obtenez-vous le fichier d'artefact que vous mentionnez par programme. J'utilise org.apache.maven.artifact.Artifact pour interagir avec les dépendances mais je n'arrive pas à comprendre comment se procurer le fichier jar. – omrsin

+0

Chaque artefact fait référence à un fichier: http://maven.apache.org/ref/3.3.9/maven-artifact/apidocs/org/apache/maven/artifact/Artifact.html#getFile() –

0

Peut-être quelque chose comme ceci fonctionnerait pour vous

public void readManifests() throws IOException { 
    URLClassLoader classLoader = (URLClassLoader) ClassLoader.getSystemClassLoader(); 

    for(URL url: classLoader.getURLs()) { 
     Manifest manifest = new JarFile(url.getFile()).getManifest(); 
    } 
}