Issue Details (XML | Word | Printable)

Key: MNG-3920
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Brett Porter
Reporter: Alfie Kirkpatrick
Votes: 0
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
Maven 2 & 3

Problem using velocity component

Created: 17/Dec/08 02:14 AM   Updated: 28/Jan/09 10:19 PM   Resolved: 28/Jan/09 10:19 PM
Component/s: Plugins and Lifecycle
Affects Version/s: 2.1.0-M1
Fix Version/s: 2.0.11, 2.1.0

Time Tracking:
Not Specified

File Attachments: 1. XML File pom.xml (0.4 kB)
2. Zip Archive swfclipse.zip (15 kB)


Complexity: Intermediate


 Description  « Hide

Jason van Zyl asked me to raise this here so he could take a look. Not convinced it is a genuine bug...

I am attempting to write a plugin that uses Velocity to template
some config files. I have been developing the plugin using m2eclipse
embedded maven runtime and it works fine. But it gives a NPE when I run
it in maven standalone, even with the 2.1M1 release.

I have the following in my class:

/**

  • @component
    */
    protected VelocityComponent velocityComponent;

The line giving the NPE is:

Template template =
velocityComponent.getEngine().getTemplate("/"templateName".vm");

When running standalone the velocityComponent is initialised with a
DefaultVelocityComponent but with a null engine, so getTemplate gives
the NPE.

Am struggling to understand if I'm doing this correctly and why it
should work in maven embedder (in m2eclipse) but not standalone?

As an aside, my class implements org.codehaus.plexus.logging.LogEnabled and running with maven embedder, the enableLogging method is called with a PlexusLoggerAdapter, but running standalone this method is not called. Can't help feeling this is related...

I have made use of a class from the eclipse plugin project and have a dependency on other eclipse plugin support classes. This is a mojo to generate project files for FlexBuilder and I ultimately want to contribute this to the flex-mojos project.

Thanks again.



Alfie Kirkpatrick added a comment - 17/Dec/08 02:15 AM

Attached are the zipped mojo project and small test pom to reproduce the error. I am mvn installing the plugin then running with:

mvn com.akirkpatrick:swfclipse:0.0.1-SNAPSHOT:eclipse

Brett Porter added a comment - 27/Jan/09 12:58 PM

You need to add this to your plexus-velocity dependency:

<exclusions>
<exclusion>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-api</artifactId>
</exclusion>
</exclusions>

This is because it clashes with the plexus-container-default in Maven so it uses the wrong Initializable (and LogEnabled) classes.

While not technically a bug in Maven, we could work around this by adding another exclusion. I think we should consider this for 2.0.11.


Brett Porter added a comment - 28/Jan/09 10:19 PM

fixed