JDK5 представила APT (инструмент обработки аннотаций). Он был частью SDK, но классы были частью неофициального пространства имен com.sun. *, И вам пришлось использовать инструмент apt для обработки исходного кода.
JDK6 очистил API и интегрировал этот материал в сам javac, поэтому вам больше не нужно использовать отдельный инструмент apt.
Созданный для обработки исходного кода с аннотациями до того, как они скомпилированы в классы, он также может использоваться для всех видов развлечений, таких как генерация кода и анализаторы кода, которые не зависят от IDE; и вам даже не обязательно использовать аннотации обязательно. С помощью этого генерируется метамодель API критериев JPA2.
Я сделал один очень надуманный пример использования процессора java6 с Eclipse. Все это можно интегрировать в сборку maven, но я оставлю это без внимания и сосредоточусь на том, как заставить эту обработку работать в Eclipse.
Поэтому мы создаем процессор, который будет генерировать новый класс для каждого класса в проектах, скомпилированных с использованием этого процессора. Кроме того , мы создадим предупреждение для каждого класса , который начинается с T . Да, это глупо.
Шаг 1: Создайте проект процессора
SillyProcessor.java:
@SupportedAnnotationTypes(value= {"*"}) @SupportedSourceVersion(SourceVersion.RELEASE_6) public class SillyProcessor extends AbstractProcessor { private Filer filer; private Messager messager; @Override public void init(ProcessingEnvironment env) { filer = env.getFiler(); messager = env.getMessager(); } @Override public boolean process(Set elements, RoundEnvironment env) { for (Element element : env.getRootElements()) { if (element.getSimpleName().toString().startsWith("Silly")) { // We don't want generate new silly classes // for auto-generated silly classes continue; } if (element.getSimpleName().toString().startsWith("T")) { messager.printMessage(Kind.WARNING, "This class name starts with a T!", element); } String sillyClassName = "Silly" + element.getSimpleName(); String sillyClassContent = "package silly;\n" + "public class " + sillyClassName + " {\n" + " public String foobar;\n" + "}"; JavaFileObject file = null; try { file = filer.createSourceFile( "silly/" + sillyClassName, element); file.openWriter() .append(sillyClassContent) .close(); } catch (IOException e) { e.printStackTrace(); } } return true; } }
Без создания этой записи META-INF я не мог заставить процессор зарегистрироваться в Eclipse.
META-INF / услуги / javax.annotation.processing.Processor:
com.kerebus.annotation.processor.SillyProcessor
Его единственным содержимым является имя реализации Процессора. Я думаю, вы могли бы перечислить несколько процессоров здесь, хотя я не уверен.
Вот и все. Теперь экспортируйте его как банку и используйте эту банку в других проектах, где вы хотите использовать процессор.
ШАГ 2: Создайте проект, который использует ваш процессор.
В свойствах вашего нового проекта перейдите в Компилятор Java -> Обработка аннотаций.
Установите флажок «Включить специфичные для проекта настройки» и убедитесь, что «Включить обработку аннотаций» отмечен. Я также изменил созданный исходный каталог на имя, которое не начиналось с точки, чтобы оно не было скрыто в проводнике пакетов (файлы или каталоги, начинающиеся с точки, по умолчанию отфильтровываются в eclipse).
Затем перейдите в Компилятор Java -> Обработка аннотаций -> Путь к фабрике.
Здесь вы должны добавить jar-файл вашего процессора. Вы не можете использовать ссылки проекта.
Нажмите кнопку «Дополнительно» , и вы увидите диалоговое окно, содержащее процессор, который вы определили в файле META-INF / services / javax.annotation.processing.Processor. Выберите его и нажмите ОК.
Шаг 3: Построй!
Мы практически закончили. Вот как это выглядит для меня в моем проекте:
Таким образом, мы получаем предупреждение для класса Thing, потому что его имя начинается с буквы «T», а для каждого класса в проекте мы получаем соответствующие «глупые» классы. Они скомпилированы и могут использоваться как любой другой обычный класс.
Для получения дополнительной информации ознакомьтесь с документами eclipse jdt / apt , в которых рассказывается о создании анализатора кода или официальных документов.
С http://kerebus.com/2011/02/using-java-6-processors-in-eclipse/ .