0

我想使用 Google Reflections 执行以下操作:

  1. 仅扫描 WEB-INF/lib/Patrac-ejb.jar

  2. 仅扫描包 com.patrac 及其所有子包。

  3. 仅扫描类型和方法注释。

以下配置似乎可以正常工作,但我对 Google Reflections 没有任何经验。

Reflections reflections = new Reflections(
    new ConfigurationBuilder()
        .filterInputsBy(new FilterBuilder().include("Patrac-ejb.jar").include(FilterBuilder.prefix("com.patrac")))
        .setScanners(new MethodAnnotationsScanner(), new TypeAnnotationsScanner())
        .setUrls(ClasspathHelper.forWebInfLib(servletContext))
);

它似乎正在工作。我想确保它没有扫描 WEB-INF/lib 中的所有其他 JAR。有没有一种简单的方法可以发现配置中的过滤器输入匹配了哪些 JAR?任何关于我的方法的建议将不胜感激。

4

1 回答 1

0

以下工作:

   //   Get the URL for Patrac-ejb.jar:
   Set<URL> urls = ClasspathHelper.forWebInfLib(webUtil.getServletContext());
   URL patracJarUrl = null;
   for(URL url : urls)
   {
       if(url.getFile().endsWith("Patrac-ejb.jar"))
       {
           patracJarUrl = url;
           break;
       }
   }
   if(null == patracJarUrl)
   {
       throw new IllegalStateException("Patrac-ejb.jar not found.");
   }

   //   Add the Patrac-ejb.jar URL to the configuration.
   Configuration configuration = new ConfigurationBuilder()
       .filterInputsBy(new FilterBuilder()
                       .include(FilterBuilder.prefix("com.patrac")))
       .setScanners(new MethodAnnotationsScanner(), new TypeAnnotationsScanner())
       .setUrls(patracJarUrl);
于 2012-08-22T21:12:36.417 回答