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/ .