我正在开发一个maven插件。我似乎很难弄清楚,从你执行MOJO的项目中获取POM信息的好方法是什么?
例如,如果我在另一个maven项目中执行mojo,我希望获得项目名称或其他一些参数。
还有一件事,在AbstractMojo.java类中有一个上下文映射,还有一个私有映射pluginContext,如果我错了,有人能纠正我吗?这应该是用来在mojo之间传递信息的。
发布于 2012-05-16 05:32:20
您可以使用如下声明的字段将当前的maven项目注入到mojo中:
/**
* @parameter default-value="${project}"
* @required
* @readonly
*/
MavenProject project;然后,只需调用project.getName()即可获得项目名称。要使用此接口,需要将maven-project工件添加为依赖项:
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>2.0.6</version>
</dependency>发布于 2014-03-12 04:53:42
@Component
private MavenProject project;如果使用新的maven-plugin-annotations (这是从maven-archetype-plugin创建的新mojos的默认设置),也可以工作(更简洁、更直观)。
编辑(感谢@bmargulies):尽管3.2版本的@Component Javadoc建议将其用于MavenProject,但显然这一建议已被弃用,该建议在3.3版本中被删除;maven-plugin-tools-annotations的idiom suggested (3.3版本)类似于(两者似乎都可以工作):
@Parameter(defaultValue="${project}", readonly=true, required=true)
private MavenProject project;发布于 2015-08-06 23:51:16
现在首选的语法是:
@Parameter(defaultValue = "${project}", required = true, readonly = true)
MavenProject project;您必须将maven-project的依赖项添加到插件的pom中:
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>2.0.6</version>
</dependency>(感谢已经提供此信息的其他人。这个答案将它们结合在一个地方。)
https://stackoverflow.com/questions/10606293
复制相似问题