Сгенерированный исходный код Java с отражением
В моем Java-приложении у меня есть класс Foo
class Foo {
String field1;
String field2;
}
Я хотел бы иметь некоторый сгенерированный код, который использует отражение в полях этого класса (воображаемый язык шаблонов)
#for each Field $f in Foo.class.getDeclaredFields()
#writeFile $f.java
public @interface $f {
}
Конечная цель - иметь Field1.java и Field2.java с простым определением @interface внутри каждого.
Есть ли доступный язык шаблонов, который может сделать это поколение частью процесса сборки Maven?
Самым близким, что мне удалось найти, является JET, но этот проект кажется более ориентированным на создание исходного кода Java, который будет доступен во время выполнения, а не во время компиляции. Теоретически я мог бы сделать эту работу, используя AntRun вместе с несколькими задачами Javac и Java, но это было бы громоздко.
Фактическим вариантом использования, для которого мне это нужно, является создание BindingAnnotations для Google Guice (который будет использоваться в исходном коде GWT, поэтому они должны существовать в виде файлов.java во время компиляции).
2 ответа
Я бы предложил два варианта здесь:
Apache Velocity: он предоставляет язык шаблонов, похожий на то, что вы описываете. Посмотрите на это здесь. Возможно, вас заинтересует их двигатель.
GWTP, кажется, делает нечто похожее на то, что вы хотите сделать. Похоже, они используют процессор аннотаций для генерации кода. Вот пример процессора, и их домашний проект находится здесь.