0

こんにちは、jboss にデプロイされた seassion Bean から Maven リポジトリを検索しようとしています

このコードは javaSE で動作します

   PlexusContainer 神経叢 = 新しい DefaultPlexusContainer();

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

// DefaultNexusIndexer n = 新しい 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 = 新しい RAMDirectory();



// IndexCreator min = 新しい 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(分);
                indexCreators.add(mavenPlugin);
                indexCreators.add(mavenArchetype);
                indexCreators.add(jar);

                IndexingContext c = n.addIndexingContext(
                     "温度"、
                    "テスト"、
                    new File("/home/tomas/Desktop/mavenTest"),
                    tempIndex ディレクトリ、
                    "http://repository.jboss.org/maven2/",
                    ヌル、
                    indexCreators );



               IndexUpdateRequest ur=新しい IndexUpdateRequest(c);
               ur.setForceFullUpdate(真);
            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 リクエスト = new FlatSearchRequest(q);
            FlatSearchResponse レスポンス = n.searchFlat(リクエスト);


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

                文字列 bUrl=url+a.groupId+"/"+a.artifactId+"/"+a.version+"/";
                文字列 fileName=a.artifactId+"-"+a.version;
                System.out.println(bUrl+ファイル名+"."+a.packaging);


            }

jboss では、次の例外が発生します。

org.codehaus.plexus.component.repository.exception.ComponentLookupException: java.util.NoSuchElementException
      役割: org.sonatype.nexus.index.NexusIndex

私の知る限り、DefaultNexusIndexer をインスタンス化できるため、これはビルド パスとは何の関係もありません (神経叢が注入を行わなければならないため、これは機能しません)。

助けてください

4

2 に答える 2

1

これは動作します

https://github.com/cstamas/maven-indexer-examples/tree/master/indexer-example-01 ところで最新バージョン

于 2011-05-25T16:29:27.620 に答える
0

クラスパスに同じPlexus 構成ファイルがあることを確認しましたか?

SE テストでは、クラスパスに神経叢構成ファイルがありorg.sonatype.nexus.index.NexusIndex、JBoss にない可能性のあるロールのコンポーネント記述子が含まれていると思います。

于 2011-05-04T05:57:57.517 に答える