プロジェクトのソースにアクセスしていくつかのファイルを生成することを期待するgradleプラグインを作成しました。Java からプロジェクトを実行するとすべてが機能しますが、プラグインを介して同じことを実行しようとすると機能しません。プロジェクトのソースは表示されません。
gradle では、ソースがビルドスクリプトに表示されないため、プラグインにも表示されないというのは本当ですか? それらをプラグインで利用できるようにすることは可能ですか?
このクラスは、クラスのリストを取得するために使用されます。
public class ClassFinder {
private final List<? extends Class<?>> classes;
public ClassFinder(String packageToScan) {
ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);
provider.addIncludeFilter(new RegexPatternTypeFilter(Pattern.compile(".*")));
Set<BeanDefinition> classes = provider.findCandidateComponents(packageToScan);
this.classes = classes.stream()
.map(bean -> {
try {
return Class.forName(bean.getBeanClassName());
} catch (ClassNotFoundException e) {
throw new IllegalStateException(e);
}
})
.collect(Collectors.toList());
}
...
}
main
メソッドまたはプラグインで使用できます。そのmain
中に、現在のプロジェクトのすべてのクラスが見つかります。プラグインでは何も見つかりません (ライブラリを除く)。