Can I add custom objects to Velocity context with Maven archetype plugin?
Asked Answered
B

0

9

We have a number of code generators that use Velocity to generate projects. The generation can be quite complicated:

  • reflection is used (to introspect 3rd party proxies that we have to interface with) prior to calling velocity - the resulting properties (a complex object graph) are added to the velocity context

  • the project structure and files can vary depending on the options selected

  • the templates do more than just variable substitution (they make use of a custom object added to the velocity context, which contains many derived properties, including collections of other objects which are iterated over in the templates)

I'd love to replace these with maven archetypes as they also use Velocity, but it appears they only seem capable of simple variable substitution and a static file/folder structure.

  1. Is there a way to do processing prior to creating a project from an archetype, add objects to the velocity context, and have the archetype templates be able to access them?

  2. If so, can the folders and files to create be dynamic? (or do you need a separate archetype for each variation?)

  3. Or is it better to write a custom Mojo? (essentially wrapping the existing generator with a Maven plugin)

Bywaters answered 10/9, 2012 at 23:47 Comment(3)
Did you find the solution to the problem. What are the possible ways if any ?Septarium
No, I moved on from that company. Looking back, maybe a groovy based solution like Spring's Initializr would be better.Bywaters
We use cookiecutter in my current job - it works really well for templating all kinds of things, and jinja templates are pretty flexible.Bywaters

© 2022 - 2024 — McMap. All rights reserved.