【问题标题】:Maven custom plugin. Array oj custom pbjectsMaven 自定义插件。自定义对象数组
【发布时间】:2012-07-11 10:48:14
【问题描述】:

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

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

效果很好....

【问题讨论】:

    标签: maven maven-2 maven-plugin


    【解决方案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>
    

    【讨论】:

    • 你是如何测试的?集成测试? mvn -X ?
    • 在 execute() 方法中 :: if (params == null) throw new ... 我得到了这个异常
    • 我在实际项目中使用这个插件。如果 MavenPlugin 类有两个字段“文件”一切正常。但现在我想要文件对数组
    • 最简单的解决方案是使用 List 而不是 Array。
    • 重命名类 TwoFiles -> 参数很有帮助
    【解决方案2】:

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

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

    【讨论】:

    • 不,创建一个名为Params 的单独类。将List&lt;TwoFiles&gt; params 添加到其中。这应该有效。
    • 重命名类 TwoFiles -> 参数很有帮助。无需将 List 放入此类。只重命名
    • 是的,其实你是对的,我很困惑,但最后——这就是我的意思。
    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 2011-03-30
    • 2016-05-10
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    相关资源
    最近更新 更多