Maven自定义插件。自定义对象的数组

时间:2012-07-11 10:48:14

标签: maven maven-2 maven-plugin

我想制作一对文件,看起来像

<configuration>
              <params>
                <param>
                  <wsdl>${basedir}/File1.wsdl</wsdl>
                  <result>D:/file1</result>
                 </param>
                 <param>
                  <wsdl>${basedir}/File2.wsdl</wsdl>
                  <result>D:/file2</result>
                </param>
               </params>
            </configuration>  

这是代码

    /**
 *
 * @goal merge 
 * @requiresProject true
 */
public class MavenPlugin extends AbstractMojo
{


    /**
        * 
        * @parameter
        * @requared
        */
       public List<TwoFiles> params;

       public void execute() throws MojoExecutionException, MojoFailureException
       {
          if (params == null || params.isEmpty())
          {
             throw new IllegalArgumentException("params is requared");
          } 



....  

public class TwoFiles
{

   public File wsdl;

   public File result;
}

效果不佳。

任何想法?

答案:

public class MainExecutor extends AbstractMojo
{
   /**
    * @parameter
    */
   private List<Param> params;  

...

public class Param
{
   public File wsdl;

   public File result;
}  

效果很好....

2 个答案:

答案 0 :(得分:2)

你有没有试过这样做:

<configuration>  
   <params>
     <param>
      <wsdl>${basedir}/File1.wsdl</wsdl>
      <result>D:/file1</result>
     </param>
     <param>
        <wsdl>${basedir}/File2.wsdl</wsdl>
        <result>D:/file2</result>
     </param>
   </params>
</configuration>

答案 1 :(得分:1)

我建议你实际上也为<params/>创建一个对象。它包含Set<TwoFiles> params。我以前遇到过这个问题,这就是我解决问题的方法。

我同意,这有点愚蠢。但是,对集合的默认支持适用于较简单的类型,例如String-s。除此之外,它不是真正面向通用的,Maven也不能很好地处理猜测。