2011-03-07 4 views
4

Je développe un plugin de partage de code pour eclipse (pour un projet de thèse de licence).Comment numériser un référentiel maven?

Actuellement, j'essaie de scanner un référentiel maven et de générer une liste de paquets.

je peux télécharger et analyser un pom.xml en utilisant les classes maven.model, mais je ne peux pas comprendre Maven les classes sont responsables de l'analyse syntaxique d'archétype catalog.xml

est-il un analyseur non Maven ? Puis-je simplement analyser l'ensemble de l'arborescence du référentiel pour y trouver des fichiers pom.xml?

modifier: Ive a trouvé nexus-indexeur, mais je ne sais pas chaud pour l'utiliser :(

Répondre

1

Il a fallu des siècles, mais j'ai finalement trouvé un exemple de travail

PlexusContainer plexus = new DefaultPlexusContainer(); 

      NexusIndexer n = (NexusIndexer) plexus.lookup(NexusIndexer.class); 
      IndexUpdater iu = (IndexUpdater) plexus.lookup(IndexUpdater.class); 

//   DefaultNexusIndexer n = new DefaultNexusIndexer(); 
       List indexCreators=new ArrayList(); 

//   IndexingContext c = n.addIndexingContext("test", "test",new File("/home/tomas/Desktop/test"),new File("/home/tomas/Desktop/index"), "http://repository.jboss.org/", null); 

      Directory tempIndexDirectory = new RAMDirectory(); 



//   IndexCreator min = new MinimalArtifactInfoIndexCreator(); 
//   MavenPluginArtifactInfoIndexCreator mavenPlugin = new MavenPluginArtifactInfoIndexCreator(); 
//    MavenArchetypeArtifactInfoIndexCreator mavenArchetype = new MavenArchetypeArtifactInfoIndexCreator(); 
//    JarFileContentsIndexCreator jar = new JarFileContentsIndexCreator(); 
//    

      IndexCreator min = plexus.lookup(IndexCreator.class, MinimalArtifactInfoIndexCreator.ID); 
       IndexCreator mavenPlugin = plexus.lookup(IndexCreator.class, MavenPluginArtifactInfoIndexCreator.ID); 
       IndexCreator mavenArchetype = plexus.lookup(IndexCreator.class, MavenArchetypeArtifactInfoIndexCreator.ID); 
       IndexCreator jar = plexus.lookup(IndexCreator.class, JarFileContentsIndexCreator.ID); 
       indexCreators.add(min); 
       indexCreators.add(mavenPlugin); 
       indexCreators.add(mavenArchetype); 
       indexCreators.add(jar); 

       IndexingContext c = n.addIndexingContext(
        "temp", 
        "test", 
        new File("/home/tomas/Desktop/mavenTest"), 
        tempIndexDirectory, 
        "http://repository.jboss.org/maven2/", 
        null, 
        indexCreators); 



       IndexUpdateRequest ur=new IndexUpdateRequest(c); 
       ur.setForceFullUpdate(true); 
      iu.fetchAndUpdateIndex(ur); 

//    for (String s : c.getAllGroups()) { 
//     System.out.println(s); 
//    } 
      BooleanQuery q = new BooleanQuery(); 
      q.add(n.constructQuery(ArtifactInfo.GROUP_ID, "*"), Occur.SHOULD); 

      FlatSearchRequest request = new FlatSearchRequest(q); 
      FlatSearchResponse response = n.searchFlat(request); 


      for (ArtifactInfo a : response.getResults()) { 

       String bUrl=url+a 
`enter code here`.groupId+"/"+a.artifactId+"/"+a.version+"/"; 
       String fileName=a.artifactId+"-"+a.version; 
       System.out.println(bUrl+fileName+"."+a.packaging); 


)}
0

Numérisation mon référentiel local des paquets serait assez lisse j'aurais une tonne de paquets dupliqués qui devraient. Avant hier, je construisais la version 1.1.1-SNAPSHOT vers mon dépôt et aujourd'hui je construis la version 1.1.2-SNAPSHOT, les répertoires pour les deux versions partageraient les mêmes paquets

Maintenant, Si vous souhaitez afficher les artefacts utilisés dans un projet, vous pouvez simplement utiliser le plugin dependency Deux de mes commandes favorites au début d'un projet maven sont:

mvn dependency:tree 

et

mvn dependency:resolve 
+0

Merci pour votre réponse, mais j'ai besoin de scanner un dépôt distant et enregistrer le résultat dans une base de données afin que je puisse rechercher plus tard – sherif

+0

Avec le résultat final étant une hiérarchie de classes du référentiel distant? – DaShaun

+0

Le résultat final devrait être une liste de tous les artefacts. – sherif

Questions connexes