【发布时间】:2016-10-21 16:03:53
【问题描述】:
我正在尝试编写一个 maven 插件,包括 mvn 配置参数中自定义类的映射。 有谁知道等效类“Person”的样子: http://maven.apache.org/guides/mini/guide-configuring-plugins.html#Mapping_Complex_Objects
<configuration>
<person>
<firstName>Jason</firstName>
<lastName>van Zyl</lastName>
</person>
</configuration>
我的自定义 mojo 看起来像这样:
/**
* @parameter property="person"
*/
protected Person person;
public class Person {
protected String firstName;
protected String lastName;
}
但我总是收到以下错误: 无法解析 mojo 的配置 ... 参数 person:无法创建类 ...$Person 的实例
谁能帮帮我?
编辑:
以 Person(包括默认构造函数、getter 和 setter)作为内部类的 Mojo 类。
public class BaseMojo extends AbstractMojo {
/**
* @parameter property="ios.person"
*/
protected Person person;
public class Person {
/**
* @parameter property="ios.firstName"
*/
protected String firstName;
/**
* @parameter property="ios.lastName"
*/
protected String lastName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Person() {
}
}
【问题讨论】:
-
确保
Person有一个带有getter / setter 的默认构造函数。另见stackoverflow.com/a/33065304/1743880。你也可以发布你的包层次结构吗? -
此外,不要使用旧式 XDoclet 使用基于注释的参数定义等。maven.apache.org/plugin-tools/maven-plugin-tools-annotations/…
-
@Tunaki 我已经为属性添加了默认构造函数和 getter & setter(请参阅原始帖子中的编辑)。不幸的是,错误仍然发生。
-
@khmarbaise thx 提示!
-
那是个问题。使 Person 成为与其他 MOJO 位于同一包内的类型。不是内部类型。
标签: maven parameters configuration mojo