Me gustaría transformar código fuente de Java en tiempo de compilación justo antes de pasar el código fuente al compilador. En otras palabras me gustaría crear un preprocesador capaz de transformarTransformación de código Java en tiempo de compilación
"bla bla bla"
en cualquier otro código, tales como:
new MyClass("bla", 3)
Mi motivación real es para cifrar la cadena, como explained here
Algunas personas sugieren escribir procesadores de anotación personalizados, pero por lo que entiendo las anotaciones:
- se pueden utilizar para generar un nuevo archivo de clase, pero no para transformar el código existente antes de pasarlo al compilador
- parecen funcionar en el paquete, clase o nivel de método, pero no en el cuerpo del método/implementación.
Algunas personas sugieren el uso de marcos como una cuchara o ObjectsWeb ASM, pero estos marcos parecen complicados de aprender y desplegar sobre una base de código existente.
Me gusta encontrar un ejemplo simple de preprocesamiento de código Java para ambos enfoques.
¿Alguien ve alguna forma inteligente de hacer la transformación del código, sin cambiar por completo una base de código grande existente con múltiples módulos de hiedra? Las anotaciones parecen ser la mejor manera, pero no entiendo cómo hacerlo.
[Jet] (http://www.eclipse.org/articles/Article-JET/jet_tutorial1.html) podría ser útil (no sé en que estado se encuentra, pero funcionó bien algunos hace años que). JavaCC sigue el mismo enfoque. – home
Puede escribir un plugin Ant/Mavin personalizado que primero haría el cifrado y luego compilaría su código. – Pushkar
Tengo la misma pregunta. ¿Puedes compartir con lo que terminaste? – rahulmohan