jboss plexus错误中的maven索引搜索
Posted
技术标签:
【中文标题】jboss plexus错误中的maven索引搜索【英文标题】:maven index search in jboss plexus error 【发布时间】:2011-08-17 06:08:06 【问题描述】:您好,我正在尝试从部署在 jboss 上的 seassion bean 中搜索 maven 存储库
此代码适用于 javaSE
PlexusContainer plexus = new DefaultPlexusContainer(); NexusIndexer n = (NexusIndexer) plexus.lookup(NexusIndexer.class); IndexUpdater iu = (IndexUpdater) plexus.lookup(IndexUpdater.class); // DefaultNexusIndexer n = new DefaultNexusIndexer(); 列出 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); 目录 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( “温度”, “测试”, 新文件(“/home/tomas/Desktop/mavenTest”), 临时索引目录, "http://repository.jboss.org/maven2/", 空值, 索引创建者); 索引更新请求 ur=新索引更新请求(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 请求 = 新的 FlatSearchRequest(q); FlatSearchResponse 响应 = n.searchFlat(request); for (ArtifactInfo a : response.getResults()) 字符串 bUrl=url+a.groupId+"/"+a.artifactId+"/"+a.version+"/"; 字符串文件名=a.artifactId+"-"+a.version; System.out.println(bUrl+fileName+"."+a.packaging);
在 jboss 上得到这个异常:
org.codehaus.plexus.component.repository.exception.ComponentLookupException: java.util.NoSuchElementException 角色:org.sonatype.nexus.index.NexusIndex
据我所知,这与构建路径无关,因为我可以实例化 DefaultNexusIndexer(这不起作用,因为 plexus 必须进行注射) 可能是神经丛的东西
请帮忙
【问题讨论】:
【参考方案1】:您是否检查过您的类路径中是否有相同的Plexus configuration files?
我想在您的 SE 测试中,您的类路径中确实有一个 plexus 配置文件,其中包含角色 org.sonatype.nexus.index.NexusIndex
的组件描述符,您的 JBoss 上可能缺少该描述符。
【讨论】:
我在 SE 和 jboss 中都没有使用相同的包。 编辑:org.sonatype.nexus.index.NexusIndex 的描述符与类在同一个包中会不会是丛无法找到它,因为它被打包在一个耳文件中? 应该可以从一个ear文件加载它,因为它只使用[ClassLoader.getResources()](download.oracle.com/javase/6/docs/api/java/lang/…。也许你可以在你的JBoss上调试(或添加日志)到看看能不能加载?【参考方案2】:这个有效
https://github.com/cstamas/maven-indexer-examples/tree/master/indexer-example-01 顺便说一句,它是最新版本
【讨论】:
以上是关于jboss plexus错误中的maven索引搜索的主要内容,如果未能解决你的问题,请参考以下文章
Maven 错误:无法找到或加载主类 org.codehaus.plexus.classworlds.launcher.Launcher
区分大小写的包上的 Maven + plexus + eclipse 编译器中可能存在错误?
安装maven 错误: 找不到或无法加载主类 org.codehaus.plexus.classworlds.launcher.Launcher
安装maven 错误: 找不到或无法加载主类 org.codehaus.plexus.classworlds.launcher.Launcher
pom.xml错误:org.codehaus.plexus.archiver.jar.Manifest.write(java.io.PrintWriter)的解决方法