从mojo将参数传递给Custom Lifecycle

时间:2011-07-16 07:33:37

标签: maven maven-plugin mojo

我编写了一个自定义maven插件,它扩展了axis2 wsdl2java插件,其概念是创建自定义生命周期,其中wsdl2java插件在我的自定义插件执行目标之前执行。

调用自定义生命周期的代码如下:

lifecycle.xml

 <lifecycles>     
    <lifecycle> 
    <id>custom-lifecycle</id> 
    <phases> 
     <phase> 
       <id>invoke</id> 
         <executions> 
              <execution> 
                <goals> 
                  <goal> 
                    org.apache.axis2:axis2-wsdl2code-maven-plugin:wsdl2code 
                  </goal> 
                </goals> 
                <configuration> 
                  <packageName>com.foo.myservice</packageName>
                   <wsdlFile>src/main/wsdl/myservice.wsdl</wsdlFile>
                 </configuration> 
              </execution> 
            </executions> 
          </phase> 
        </phases> 
      </lifecycle> 
    </lifecycles> 

我的魔力是

/**
 * 
 * @goal process
 * @execute lifecycle="custom-lifecycle" phase="invoke"
 */
public class SampleMojo extends AbstractMojo
{
  public void execute()
    throws MojoExecutionException
  {
    //Code
  }
}

问题:我想从我的自定义插件中传递wsdl2java插件的参数(即packagename,wsdlFile)。

是否可以将参数从我的Mojo发送到自定义生命周期?如果是这样怎么办?

先谢谢

Aadhya

1 个答案:

答案 0 :(得分:2)

是的,这确实是可行的,并且通过使用与 @param 的xml参数相同的名称注释静态字段来实现,如下所示:

/**
 * Package name - this is injected from the 'packageName' xml element
 * @parameter
 */
private static String packageName;

/**
 * WSDL File Location, populated from the 'wsdlFile' xml element
 * @parameter
 */
private static String wsdlFile;

public void execute() throws MojoExecutionException, MojoFailureException {
    //do stuff here with packageName and wsdlFile.
}
PS:Checkstyle有@goal和@parameter的问题 - 我不得不使用// CSOFF:TreeWalker关闭checkstyle以完全禁用此类。