[英]How can I scan a maven repository?
我正在为eclipse开发一个代码共享插件(用于学士论文项目)。
目前我正在尝试扫描maven存储库并生成包列表。
我可以使用maven.model类下载和解析pom.xml,但我无法确定哪些maven类负责解析archetype-catalog.xml
有非maven解析器吗?
我可以只扫描整个存储库树中的pom.xml文件吗?
编辑:我发现nexus索引器,但我不知道热使用它:(
花了很长时间,但我终于找到了一个有效的例子
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); )}
为了将来参考, nexus-indexer
已经捐赠给Apache Foundation ,现在称为maven-indexer
。 有一个github镜像 ,该项目也在Apache Git页面上列出
扫描我的本地存储库以获取软件包非常灵活。 在分享任何内容之前,我需要考虑大量重复的软件包。 从昨天开始,我正在构建版本1.1.1-SNAPSHOT到我的存储库,今天我正在构建版本1.1.2-SNAPSHOT,两个版本的目录将共享相同的包。
现在,如果您想要显示项目中使用的工件,您可以使用依赖项插件。 在maven项目开始时我最喜欢的两个命令是:
mvn dependency:tree
和
mvn dependency:resolve
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.