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