我工作的一个Maven插件。 我似乎有一个很难搞清楚,这将是一个很好的方式来获得在其中执行MOJO项目的POM信息?
举例来说,如果我在另一个Maven项目执行我的魔力我想获得项目名称或其他一些参数。
还有一两件事,有在AbstractMojo.java一流的语境映射有私人地图pluginContext,可能有人纠正我,如果我错了,但这是假设用于传递mojos之间的信息?
我工作的一个Maven插件。 我似乎有一个很难搞清楚,这将是一个很好的方式来获得在其中执行MOJO项目的POM信息?
举例来说,如果我在另一个Maven项目执行我的魔力我想获得项目名称或其他一些参数。
还有一两件事,有在AbstractMojo.java一流的语境映射有私人地图pluginContext,可能有人纠正我,如果我错了,但这是假设用于传递mojos之间的信息?
你可以注入当前Maven项目与申报这样的领域你的魔力:
/**
* @parameter default-value="${project}"
* @required
* @readonly
*/
MavenProject project;
该项目的名称通过简单地调用随后可project.getName()
要使用此API,您需要将添加maven-project
神器作为一个依赖:
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>2.0.6</version>
</dependency>
@Component
private MavenProject project;
也可以(更简洁,直观地),如果使用的是maven-plugin-annotations
,这是一种能够创造新的mojos默认maven-archetype-plugin
。
EDIT(感谢@bmargulies):虽然@Component
的Javadoc为3.2建议将它用于MavenProject
,显然该已被弃用和建议被丢弃作为3.3; 该建议成语通过maven-plugin-tools-annotations
(如3.3)是这样的(似乎都工作):
@Parameter(defaultValue="${project}", readonly=true, required=true)
private MavenProject project;
优选的语法是:
@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>
(感谢谁已经提供了这一信息已经等。这个答案将它们组合在同一个地方。)