Как использовать пользовательский процессор аннотаций с Maven 2?

В нашем корпоративном приложении мы ищем динамический способ сбора данных из наших классов Java. Мы создали собственный интерфейс аннотаций (@interface). со свойством name. Мы хотели бы получить значение этого свойства из всех аннотированных классов.

Мне удалось создать AnnotationProcessorFactoryи AnnotationProcessorдля пользовательской аннотации. Поскольку мы используем Maven 2, я добавил следующее в плагины в pom.xmlосновного проекта.

    
      org.codehaus.mojo
      apt-maven-plugin
      1.0-alpha-5
      
        our.company.api.component.lister.ComponentAnnotationProcessFactory
      
    

Он находится в основном проекте, который имеет несколько подпроектов -. Фабрика и пользовательский процессор находятся в одном из этих подпроектов -. Пользовательские аннотации разбросаны по всем подпроектам -, поэтому я поместил плагин в pom.xmlосновного проекта.

Проблема в том, что когда я запускаю команду mvn apt:process, я получаю предупреждение об аннотациях без процессоров, и среди них есть наша пользовательская аннотация. Я предполагаю, что это означает, что плагин не может найти фабричный класс.

Что нужно сделать, чтобы плагин нашел фабрику и файл процессора?

РЕДАКТИРОВАТЬ:

Иерархия проекта очень проста:

main_project
|-sub_project1
|...
|-sub_projectn

Плагин находится в pom.xmlиз main_project. Просто предположим, что фабрика и процессор находятся в sub_project1, а пользовательские аннотации — в sub_project2, sub_project3,..., sub_projectn

-. 121 ---1631638-

Почему одноэлементный класс должен быть запечатан?Я хочу знать, почему одноэлементный класс должен быть запечатан. Если мы даем конструктору как частный, мы можем предотвратить создание класса, верно?.. Ниже я вставляю несколько строк из MSDN. Пожалуйста...

Я хочу знать, почему одноэлементный класс должен быть запечатан. Если мы указываем конструктор как закрытый, мы можем предотвратить создание класса, верно?..Ниже я вставляю несколько строк из MSDN. Пожалуйста, раскрасьте его..

In this strategy, the instance is created the first time any member of the class is referenced. The common language runtime takes care of the variable initialization. The class is marked sealed to prevent derivation, which could add instances. For a discussion of the pros and cons of marking a class sealed, see [Sells03]. In addition, the variable is marked readonly, which means that it can be assigned only during static initialization (which is shown here) or in a class constructor.

http://msdn.microsoft.com/en-us/library/ff650316.aspx

7
задан Cody Gray 26 July 2012 в 11:40
поделиться