To build a website with "mvn site", you need to put your custom .vm file somewhere in your project directory, and then in your pom.xml configure the maven-site-plugin to use that .vm file.

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<templateFile>${basedir}/src/my-custom-template.vm</templateFile>
</configuration>
</plugin>

Try this and maybe the velocity component will "just work".

Cheers, Csaba


On 08/25/2010 12:54 PM, jasnook wrote:
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


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to