我编写了一个自定义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
答案 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以完全禁用此类。