1

我想做成对的文件,看起来像

<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;
}  

效果很好....

4

2 回答 2

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>
于 2012-07-11T11:01:28.423 回答
1

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

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

于 2012-07-11T11:45:07.217 回答