Using a Veloctity template in a custom Maven report
Hi,
I am trying to write a report plugin for Maven which will run during
the 'site' stage in the lifecycle. The plugin needs to be able to use
a Velocity template to create a HTML file.
I have created a Mojo which extends AbstractMavenReport and within
that I have
/**
* @component
*/
private VelocityComponent velocityComponent;
so that I can get hold of the Plexus velocity component. I am
currently passing this into a method and using this as:
public void createReport(VelocityComponent velocityComponent) throws
Exception {
VelocityContext context = new VelocityContext();
// put stuff into the context.
Template template = null;
try {
Properties props = new Properties();
props.setProperty("resource.loader",
"classpath"); //makes no difference if set or
not
props.setProperty("classpath.resource.loader.class",
"org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); //
makes no difference if set or not
velocityComponent.getEngine().init(props);
template =
velocityComponent.getEngine().getTemplate("report.vm");
}
catch (ResourceNotFoundException rnfe) {
System.out.println("Example : error : cannot find template
report.vm");
}
catch (ParseErrorException pee) {
System.out.println("Example : Syntax error in template
report.vm: " + pee);
}
BufferedWriter writer = writer = new BufferedWriter(
new OutputStreamWriter(System.out)); //testing by
writing to the screen
if (template != null) {
template.merge(context, writer);
}
writer.flush();
writer.close();
}
I am getting a ResourceNotFoundException when running this. Where do
I need to put the vm file so that it is picked up or how should I be
using the velocitycomponent?
btw. I am using Maven 2.2.1.
Thanks,
Jacqui