我正在为eclipse开发一个代码共享插件(用于学士论文项目)。
目前,我正在尝试扫描Maven存储库并生成软件包列表。
我可以使用maven.model类下载并解析pom.xml,但是我无法弄清楚哪个maven类负责解析archetype-catalog.xml。
是否有非Maven解析器?
我可以只扫描整个存储库树中的pom.xml文件吗?
编辑:
香港专业教育学院发现了nexus-indexer,但我不知道要使用它:(
最佳答案
花了很长时间,但我终于找到了一个可行的例子
PlexusContainer plexus =新的DefaultPlexusContainer();
NexusIndexer n =(NexusIndexer)plexus.lookup(NexusIndexer.class);
索引更新器iu =(IndexUpdater)plexus.lookup(IndexUpdater.class);
// DefaultNexusIndexer n =新的DefaultNexusIndexer();
列出indexCreators = new ArrayList();
// IndexingContext c = n.addIndexingContext(“test”,“test”,新File(“/ home / tomas / Desktop / test”),new File(“/ home / tomas / Desktop / index”),“http: //repository.jboss.org/",null);
目录tempIndexDirectory =新的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,MavenPluginArtifactInfoIndexIndexCreator.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(
“温度”,
“测试”,
新文件(“/ home / tomas / Desktop / mavenTest”),
tempIndexDirectory,
“http://repository.jboss.org/maven2/”,
空值,
indexCreators);
IndexUpdateRequest ur = new IndexUpdateRequest(c);
ur.setForceFullUpdate(true);
iu.fetchAndUpdateIndex(ur);
// for(String s:c.getAllGroups()){
// System.out.println(s);
//}
BooleanQuery q =新的BooleanQuery();
q.add(n.constructQuery(ArtifactInfo.GROUP_ID,“*”),Occur.SHOULD);
FlatSearchRequest请求=新的FlatSearchRequest(q);
FlatSearchResponse响应= n.searchFlat(request);
对于(ArtifactInfo a:response.getResults()){
字符串bUrl = url + a
`在此处输入代码。.groupId+“/” + a.artifactId +“/” + a.version +“/”;
字符串fileName = a.artifactId +“-” + a.version;
System.out.println(bUrl + fileName +“。” + a.packaging);
)}