2

一位用户报告说,我维护的一个 maven 插件不再适用于 maven 2(它在 maven 3 下运行得很好)。它无法解析带有错误的pom

Cause: Class 'java.util.List' cannot be instantiated

一个快速的谷歌建议这是 3.0 之前的 maven 模型中的一个错误,它影响了其他插件。

http://code.google.com/p/maven-samaxes-plugin/issues/detail?id=18

我最近通过为 List 参数指定表达式添加了对通过命令行设置值的支持,看来这已经触发了这个错误。

 /**
 * @parameter expression="${targetClasses}" 
 */
  protected List<String>  targetClasses;

我可以通过将字段声明为具体的列表类型来解决这个问题,但是每个人都知道每次你这样做都会死去一个仙女。

除了取消对 maven 2 的支持或使用具体类型之外,是否有更好的解决方案来解决这个问题?

4

1 回答 1

0

这已经很老了,我猜你已经回答了你自己的问题......不过,为了完整起见,这里是:

我正在使用 mvn 2.0.9 并且必须从以下位置迁移List<String>

/**
 * @parameter expression="${arguments}" 
 */
protected List<String> arguments;      //with or without generics, still complained!

String[]

/**
 * @parameter expression="${arguments}" 
 */
protected String[] arguments;

那么pom配置如下:

<configuration>
    ...
    <arguments>
        <argument>arg1</argument>
        <argument>arg2</argument>
    </arguments>
</configuration>
于 2014-08-21T11:39:08.487 回答