Java的Maven的MOJO - 正从项目POM信息(Java Maven MOJO - get

2019-07-29 09:42发布

我工作的一个Maven插件。 我似乎有一个很难搞清楚,这将是一个很好的方式来获得在其中执行MOJO项目的POM信息?

举例来说,如果我在另一个Maven项目执行我的魔力我想获得项目名称或其他一些参数。

还有一两件事,有在AbstractMojo.java一流的语境映射有私人地图pluginContext,可能有人纠正我,如果我错了,但这是假设用于传递mojos之间的信息?

Answer 1:

你可以注入当前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>


Answer 2:

@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;


Answer 3:

优选的语法是:

@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>

(感谢谁已经提供了这一信息已经等。这个答案将它们组合在同一个地方。)



文章来源: Java Maven MOJO - getting information from project POM