我对在我的 maven mojo 中注释字段感到困惑。 例如,为了检索MavenProject
实例,代码如下所示
/**
* @property property="${project}"
* @readonly
* @required
*/
private MavenProject project;
或者它可能看起来像这样(做同样的事情(
@Parameter(defaultValue = "${project}", readonly = true, required = true)
private MavenProject project;
您甚至可以组合这两种变体,这也以某种方式起作用。
- 这些变体之间究竟有什么区别?
- 其中一种方法是否已弃用/过时?首选方式是什么?
- 变体"javadoc":将程序逻辑编码到注释中有什么意义?
Javadoc 变体是指定应该进入插件描述符的信息的旧方法.xml。Java 注解仅在 Java 5 中引入。
MOJO的Java 5注释提案描述了使用注释而不是Javadoc标签的一些优点:
使用 java 5 注释而不是 javadoc 注释具有多种好处:
- 插件元数据的编译时检查,某些注释使用枚举
- 继承支持
- 大多数 IDE 都支持注释,提供代码完成和语法检查
此外,maven-plugin-plugin 文档提到它允许在不同的项目中拥有 MOJO 超级类,并且它们的源代码不需要可用。
使用哪种方法?
出于上述原因,我会使用 Java 5 注释,也因为您在第三个问题中提出的观点:程序逻辑不应在注释中编码。