You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by Jeremy Long <je...@gmail.com> on 2013/01/20 22:34:31 UTC

Maven Plugin Issue - MavenProject Not Bound

I am trying to create a simple plugin to inspect project dependencies using
the MavenProject - but I'm getting an error because the MavenProject is not
bound (see below for details).

Here is the code for the plugin:

/**
 * Goal that checks project dependencies
 * @goal package
 * @phase package
 * @requiresProject false
 * @requiresDependencyResolution runtime
 * @requiresOnline true
 * @execute phase="package"
 */
public class DependencyCheckMojo extends AbstractMojo {

    /**
     * POM
     *
     * @component
     */
    protected MavenProject project;

    public void execute() throws MojoExecutionException {
        if (project != null) {
            Set<Artifact> artifacts = project.getArtifacts();
            for (Artifact a : artifacts) {
                getLog().error(a.getFile().toString());
            }
        } else {
            getLog().error("Dependency Check - Maven project is null");
        }
    }
}

The POM for the plugin is:

    ....
    <groupId>org.codesecure</groupId>
    <artifactId>DependencyCheck-Plugin</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>maven-plugin</packaging>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-plugin-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <goalPrefix>dependencycheck</goalPrefix>
                </configuration>
                <executions>
                    <execution>
                        <id>mojo-descriptor</id>
                        <goals>
                            <goal>descriptor</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-plugin-api</artifactId>
            <version>3.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-core</artifactId>
            <version>3.0</version>
        </dependency>
    ....


However, when I use this plugin in another project:

            <plugin>
                <groupId>org.codesecure</groupId>
                <artifactId>DependencyCheck-Plugin</artifactId>
                <version>1.0-SNAPSHOT</version>
                <executions>
                  <execution>
                    <phase>package</phase>
                    <goals>
                      <goal>package</goal>
                    </goals>
                  </execution>
                </executions>
            </plugin>

And I run 'mvn package' I get the following error:

[ERROR] Failed to execute goal
org.codesecure:DependencyCheck-Plugin:1.0-SNAPSHO
T:package (default) on project sample: Execution default of goal
org.codesecure:
DependencyCheck-Plugin:1.0-SNAPSHOT:package failed: Unable to load the mojo
'pac
kage' (or one of its required components) from the plugin
'org.codesecure:Depend
encyCheck-Plugin:1.0-SNAPSHOT': com.google.inject.ProvisionException: Guice
prov
ision errors:
[ERROR]
[ERROR] 1) No implementation for org.apache.maven.project.MavenProject was
bound
.
[ERROR] while locating org.codesecure.DependencyCheckMojo


Any idea what I'm doing wrong?

Thanks in advance,

Jeremy

Re: Maven Plugin Issue - MavenProject Not Bound

Posted by Robert Scholte <rf...@apache.org>.
When using doclet-tags, you should use:
@parameter default-value="${project}"

Robert

Op Sun, 20 Jan 2013 22:34:31 +0100 schreef Jeremy Long  
<je...@gmail.com>:

> I am trying to create a simple plugin to inspect project dependencies  
> using
> the MavenProject - but I'm getting an error because the MavenProject is  
> not
> bound (see below for details).
>
> Here is the code for the plugin:
>
> /**
>  * Goal that checks project dependencies
>  * @goal package
>  * @phase package
>  * @requiresProject false
>  * @requiresDependencyResolution runtime
>  * @requiresOnline true
>  * @execute phase="package"
>  */
> public class DependencyCheckMojo extends AbstractMojo {
>
>     /**
>      * POM
>      *
>      * @component
>      */
>     protected MavenProject project;
>
>     public void execute() throws MojoExecutionException {
>         if (project != null) {
>             Set<Artifact> artifacts = project.getArtifacts();
>             for (Artifact a : artifacts) {
>                 getLog().error(a.getFile().toString());
>             }
>         } else {
>             getLog().error("Dependency Check - Maven project is null");
>         }
>     }
> }
>
> The POM for the plugin is:
>
>     ....
>     <groupId>org.codesecure</groupId>
>     <artifactId>DependencyCheck-Plugin</artifactId>
>     <version>1.0-SNAPSHOT</version>
>     <packaging>maven-plugin</packaging>
>
>     <build>
>         <plugins>
>             <plugin>
>                 <artifactId>maven-plugin-plugin</artifactId>
>                 <version>2.3</version>
>                 <configuration>
>                     <goalPrefix>dependencycheck</goalPrefix>
>                 </configuration>
>                 <executions>
>                     <execution>
>                         <id>mojo-descriptor</id>
>                         <goals>
>                             <goal>descriptor</goal>
>                         </goals>
>                     </execution>
>                 </executions>
>             </plugin>
>         </plugins>
>     </build>
>     <dependencies>
>         <dependency>
>             <groupId>org.apache.maven</groupId>
>             <artifactId>maven-plugin-api</artifactId>
>             <version>3.0</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.maven</groupId>
>             <artifactId>maven-core</artifactId>
>             <version>3.0</version>
>         </dependency>
>     ....
>
>
> However, when I use this plugin in another project:
>
>             <plugin>
>                 <groupId>org.codesecure</groupId>
>                 <artifactId>DependencyCheck-Plugin</artifactId>
>                 <version>1.0-SNAPSHOT</version>
>                 <executions>
>                   <execution>
>                     <phase>package</phase>
>                     <goals>
>                       <goal>package</goal>
>                     </goals>
>                   </execution>
>                 </executions>
>             </plugin>
>
> And I run 'mvn package' I get the following error:
>
> [ERROR] Failed to execute goal
> org.codesecure:DependencyCheck-Plugin:1.0-SNAPSHO
> T:package (default) on project sample: Execution default of goal
> org.codesecure:
> DependencyCheck-Plugin:1.0-SNAPSHOT:package failed: Unable to load the  
> mojo
> 'pac
> kage' (or one of its required components) from the plugin
> 'org.codesecure:Depend
> encyCheck-Plugin:1.0-SNAPSHOT': com.google.inject.ProvisionException:  
> Guice
> prov
> ision errors:
> [ERROR]
> [ERROR] 1) No implementation for org.apache.maven.project.MavenProject  
> was
> bound
> .
> [ERROR] while locating org.codesecure.DependencyCheckMojo
>
>
> Any idea what I'm doing wrong?
>
> Thanks in advance,
>
> Jeremy

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org