首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Maven MOJO -从项目POM获取信息

Java Maven MOJO -从项目POM获取信息
EN

Stack Overflow用户
提问于 2012-05-16 02:00:45
回答 5查看 13.6K关注 0票数 29

我正在开发一个maven插件。我似乎很难弄清楚,从你执行MOJO的项目中获取POM信息的好方法是什么?

例如,如果我在另一个maven项目中执行mojo,我希望获得项目名称或其他一些参数。

还有一件事,在AbstractMojo.java类中有一个上下文映射,还有一个私有映射pluginContext,如果我错了,有人能纠正我吗?这应该是用来在mojo之间传递信息的。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-05-16 05:32:20

您可以使用如下声明的字段将当前的maven项目注入到mojo中:

代码语言:javascript
复制
/**
 * @parameter default-value="${project}"
 * @required
 * @readonly
 */
MavenProject project;

然后,只需调用project.getName()即可获得项目名称。要使用此接口,需要将maven-project工件添加为依赖项:

代码语言:javascript
复制
<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-project</artifactId>
    <version>2.0.6</version>
</dependency>
票数 34
EN

Stack Overflow用户

发布于 2014-03-12 04:53:42

代码语言:javascript
复制
@Component
private MavenProject project;

如果使用新的maven-plugin-annotations (这是从maven-archetype-plugin创建的新mojos的默认设置),也可以工作(更简洁、更直观)。

编辑(感谢@bmargulies):尽管3.2版本的@Component Javadoc建议将其用于MavenProject,但显然这一建议已被弃用,该建议在3.3版本中被删除;maven-plugin-tools-annotationsidiom suggested (3.3版本)类似于(两者似乎都可以工作):

代码语言:javascript
复制
@Parameter(defaultValue="${project}", readonly=true, required=true)
private MavenProject project;
票数 22
EN

Stack Overflow用户

发布于 2015-08-06 23:51:16

现在首选的语法是:

代码语言:javascript
复制
@Parameter(defaultValue = "${project}", required = true, readonly = true)
MavenProject project;

您必须将maven-project的依赖项添加到插件的pom中:

代码语言:javascript
复制
<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-project</artifactId>
    <version>2.0.6</version>
</dependency>

(感谢已经提供此信息的其他人。这个答案将它们结合在一个地方。)

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10606293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档