Как я могу отсканировать репозиторий Maven? - PullRequest
4 голосов
/ 08 марта 2011

Я разрабатываю плагин для совместного использования кода для Eclipse (для дипломной работы бакалавра).

В настоящее время я пытаюсь отсканировать репозиторий maven и создать список пакетов.

Я могу загрузить и проанализировать pom.xml, используя классы maven.model, но не могу понять, какие классы maven отвечают за синтаксический анализ archetype-catalog.xml

Есть ли парсер не maven?

Могу ли я просто просканировать все дерево репозитория на наличие файлов pom.xml?

редактирование: Я нашел nexus-indexer, но понятия не имею, как его использовать: (

Ответы [ 3 ]

2 голосов
/ 03 мая 2011

Потребовалось много времени, но я наконец нашел рабочий пример

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);


)}
1 голос
/ 03 мая 2011

Для дальнейшего использования nexus-indexer был подарен Apache Foundation и теперь известен как maven-indexer.Существует зеркало github , и проект также указан на странице Apache Git

0 голосов
/ 08 марта 2011

Сканирование моего локального репозитория на пакеты было бы довольно гладко. У меня будет тонна дублированных пакетов, которые нужно будет рассмотреть, прежде чем я поделюсь чем-нибудь. Со вчерашнего дня я собирал версию 1.1.1-SNAPSHOT для своего репозитория, а сегодня я собираю версию 1.1.2-SNAPSHOT, каталоги для обеих версий будут иметь одинаковые пакеты.

Теперь, если вы хотите показать, какие артефакты используются в проекте, вы можете просто использовать плагин зависимостей. Две из моих любимых команд в начале проекта maven:

mvn dependency:tree

и

mvn dependency:resolve
...