2017-05-16 13 views
1

私のアプリケーションでアノテーションを探し、リフレクションによってマークされたクラスを読み込むGradleプラグインを作成する必要があります。 Gradleタスクのリフレクションの使い方

private void scanAnnotatedFields() { 
    ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false); 
    provider.addIncludeFilter(new AnnotationTypeFilter(MisEntity.class)); 

    for (BeanDefinition beanDefinition : provider.findCandidateComponents("ru.org")) { 
     Class clazz = null; 
     try { 
      clazz = Class.forName(beanDefinition.getBeanClassName()); 
     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } 
     System.out.println(clazz.toString()); 
    } 
} 

しかし、この方法ではないターゲットアプリケーションから、私のGradleプラグインアプリケーションのクラスを読んで:私はGradleのタスクからメソッドを呼び出します。私は正しいクラスパスか多分何かを使う必要があると思う。私を助けてください。ありがとう。 P. S.私の英語は申し訳ありません。

+0

あなたはそれを試用する例がありますか?おそらく、あなたは正しいクラスパスを設定する必要があります。 – Opal

+0

お返事ありがとうございます@Opal。この例は、https://yadi.sk/d/o0_YNfZn3JFiZhからダウンロードできます。 3つのプロジェクトがあります。 1stは私のアプリケーションです。注釈は、注釈付きの図書館です。そしてmis-template-pluginはプラグインです。 BuildLogicFunctionalTest.javaファイルにプロジェクト1への絶対パスがあります。この例を準備している間、私は例外ClassNotFoundExceptionを求めました。プラグインは実行時にMisEntity3.classを表示しません。あなたが私を助けたら、私は非常に感謝します。 –

答えて

関連する問題