http://reflections.googlecode.com/ユーティリティを使用しています
これは私が実行しようとしている方法です
// このリストには最上位のモジュールのみを追加する必要があります
protected Set<Class<? extends Module>> discoverModulesOnClassPath() {
// Scan classpath to identify modules
Predicate<String> filter = new FilterBuilder().includePackage("org.appops.server.core.bindings") ;
Reflections reflections = new Reflections(new ConfigurationBuilder()
.setScanners(new SubTypesScanner()).setUrls(asList(ClasspathHelper.forClass(Module.class))));
Set<Class<? extends Module>> guiceModules = reflections.getSubTypesOf(Module.class);
return guiceModules;
}
そして、これは私のテストです
@Test
public void testDiscoverModulesOnClassPath() {
AppOpsCoreServletConfig config = new AppOpsCoreServletConfig() ;
Set<Class<? extends Module>> modules = config.discoverModulesOnClassPath() ;
for ( Class m : modules){
System.out.println(m.getSimpleName());
}
}
特定のパッケージに3つのカスタムモジュールがあります(パスをクロスチェックしました)が、このクラスのリストを出力します
ProviderMethodsModule
抽象モジュール
ルートモジュール
プライベートモジュール