maven定制生命周期无法识别

时间:2012-02-27 20:28:28

标签: maven-2 maven-plugin lifecycle mojo plexus

我正在尝试使用自定义生命周期测试一个简单的自定义插件。

这是我的EchoMojo.java文件:

package org.sonatype.mavenbook.plugins;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
/**
* Echos an object string to the output screen.
* @goal echo
* @execute lifecycle="custom-echo" phase="package"
*/
public class EchoMojo extends AbstractMojo
{
/**
* Any Object to print out.
* @parameter expression="${echo.message}" default-value="Hello World..."
*/
private Object message;
public void execute()
throws MojoExecutionException, MojoFailureException
{
getLog().info( message.toString() );
}
}

我的pom.xml看起来像这样:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-  v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.sonatype.mavenbook.plugins</groupId>
<artifactId>echotest-maven-plugin</artifactId>
<packaging>maven-plugin</packaging>
<version>1.0-SNAPSHOT</version>
<name>echotest-plugin Maven Mojo</name>
<url>http://maven.apache.org</url>
<build>
  <resources>
    <resource>
      <directory>src/main/resources</directory>
      <filtering>true</filtering>
    </resource>
  </resources>
</build>
<dependencies>
  <dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-plugin-api</artifactId>
    <version>2.0</version>
  </dependency>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>3.8.1</version>
    <scope>test</scope>
  </dependency>
</dependencies>
</project>

我在settings.xml中添加了这个:

<pluginGroups>
<pluginGroup>org.sonatype.mavenbook.plugins</pluginGroup>
</pluginGroups>

我创建了META-INF / maven / lifecycle.xml

<lifecycles>
<lifecycle>
    <id>custom-echo</id>
    <phases>
        <phase>
            <id>package</id>
            <executions>
                <execution>
                <goals>
                    <goal>echo</goal>
                </goals>
                </execution>
            </executions>
        </phase>
    </phases>
</lifecycle>
</lifecycles>

我创建了META-INF / plexus / components.xml

<component-set>
<components>
    <component>
        <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
        <role-hint>custom-echo</role-hint>
        <implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
        <configuration>
            <phases>
                <package>org.sonatype.mavenbook.plugins:echotest-maven-plugin:echo</package>
            </phases>
         </configuration>
    </component>
</components>
</component-set>

当我做mvn echotest:echo时,我得到“Build Sucessfull”。

当我做mvn custom-echo时,我得到“[ERROR]未知生命周期阶段”custom-echo“。”

我想要的是在执行“mvn custom-echo”时激活我的自定义插件,其中custom-echo是自定义生命周期名称

请有人帮帮我。

0 个答案:

没有答案