Java Maven MOJO - 从项目 POM 获取信息
我正在开发一个 maven 插件。我似乎很难弄清楚,从执行MOJO的项目中获取POM信息的好方法是什么?
例如,如果我在另一个maven项目中执行我的mojo,我想获得项目名称或其他一些参数。
还有一件事,抽象Mojo中有一个上下文MAP.java类有私有Map插件Context,如果我错了,有人可以纠正我吗,但这是假设用于在mojos之间传递信息?
我正在开发一个 maven 插件。我似乎很难弄清楚,从执行MOJO的项目中获取POM信息的好方法是什么?
例如,如果我在另一个maven项目中执行我的mojo,我想获得项目名称或其他一些参数。
还有一件事,抽象Mojo中有一个上下文MAP.java类有私有Map插件Context,如果我错了,有人可以纠正我吗,但这是假设用于在mojos之间传递信息?
您可以将当前的 maven 项目注入到 mojo 中,并使用以下声明的字段:
/**
* @parameter default-value="${project}"
* @required
* @readonly
*/
MavenProject project;
然后,只需调用 即可获得项目名称。要使用此 API,您需要将工件添加为依赖项:project.getName()
maven-project
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>2.0.6</version>
</dependency>
@Component
private MavenProject project;
如果使用新的 ,也可以工作(更简洁和直观),这是从 创建的新 mojos 的默认值。maven-plugin-annotations
maven-archetype-plugin
编辑(感谢@bmargulies):尽管Javadoc从3.2开始建议使用它,但显然已被弃用,并且该建议从3.3开始被删除;(截至3.3)建议的成语是这样的(两者似乎都有效):@Component
MavenProject
maven-plugin-tools-annotations
@Parameter(defaultValue="${project}", readonly=true, required=true)
private MavenProject project;