Maven 2 & 3

Problem using velocity component

Details

  • Type: Bug Bug
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Fixed
  • Affects Version/s: 2.1.0-M1
  • Fix Version/s: 2.0.11, 2.1.0
  • Component/s: Plugins and Lifecycle
  • Labels:
    None
  • Complexity:
    Intermediate
  • Number of attachments :
    2

Description

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.

Issue Links

Activity

Hide
Alfie Kirkpatrick added a comment -

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
Show
Alfie Kirkpatrick added a comment - 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
Hide
Brett Porter added a comment -

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.

Show
Brett Porter added a comment - 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.
Hide
Brett Porter added a comment -

fixed

Show
Brett Porter added a comment - fixed

People

Vote (0)
Watch (1)

Dates

  • Created:
    Updated:
    Resolved: