什么是 Maven 中的 MOJO?

Posted

技术标签:

【中文标题】什么是 Maven 中的 MOJO?【英文标题】:What is MOJO in Maven? 【发布时间】:2011-12-07 18:31:28 【问题描述】:

我现在正在阅读有关 Maven 的信息,并且在我看到这个词 (mojo) 的文本中到处都是。我大致了解它的含义,但我不会拒绝一个好的解释。我试图用谷歌搜索,但只找到了非 Maven 的解释。

POJO - 好的,但是 MOJO? Maven 旧 Java 对象?

【问题讨论】:

:) 据我所知——在某种意义上——这只是文字游戏...... 【参考方案1】:

是的,来自http://maven.apache.org/plugin-developers/index.html

什么是 Mojo? mojo 是一个 Maven 普通的旧 Java 对象。每个 mojo 都是 Maven 中的一个可执行目标,一个插件是一个或多个相关 mojo 的分发。

简而言之,mojo 是一个 maven 目标,用于扩展 maven 中尚未找到的功能。

【讨论】:

那么“mojo”只是 Maven 术语中“目标”的同义词吗?还是它们代表密切相关的不同实体?【参考方案2】:

如here所写:

Maven 插件是包含插件描述符的 Maven 工件 和一个或多个 Mojos。 Mojo 可以被认为是 Maven 中的一个目标, 每个目标都对应一个 Mojo。 compiler:compile 目标 对应 Maven Compiler Plugin 中的CompilerMojo 类, 并且 jar:jar 目标对应于 Maven 中的 JarMojo 类 罐子插件。当您编写自己的插件时,您只是在分组 将一组相关的 Mojos(或目标)放在一个插件中 神器。

Mojo 只是与 Maven 目标相关联,因此我们可以说 Mojo 不仅仅是 Maven 中的目标。

【讨论】:

这是迄今为止最好的答案,我很抱歉你没有更多的赞成票!其他答案没有提供比文档中更多的信息。 @marcv81 不幸的是,它也不是原创的;直接从其他来源复制和粘贴,不注明出处。 耻辱。不过还是有用的。【参考方案3】:

Maven site 表示 Mojo 是“Maven”+“POJO(普通旧 Java 对象)”的组合。那么,MOJO = Maven 旧 Java 对象。

但Maven: The Complete Reference 的另一个不同答案是我认为来自管理 Maven 网站的同一群人,这表明 Mojo 意味着神奇的 POJO。

【讨论】:

我没有在页面的任何地方看到建议使用“Magical POJO”;如果有的话,页面定义了 mojo 在经典语境中的含义,也就是说“但这与这个定义无关”。 Magical POJO 建议在链接文档的最后一段(Maven: The Complete Reference):Mojo? What is a Mojo? The word mojo is defined as "a magic charm or spell", "an amulet, often in a small flannel bag containing one or more magic items", and "personal magnetism; charm". Maven uses the term Mojo because it is a play on the word Pojo (Plain-old Java Object). @codefan-BK 如果 Maven 网站说 Mojo 中的 M 代表 Maven,那么您为什么要跳到暗示它是 Magical POGO 的想法呢?它已经定义好了。 @Lynn Crumbling 按照您单独提供的链接进行定义,您的简短回答确实是详尽无遗的。但是关于 Javateer 给出的第二个链接中的额外解释表明,决定 Mojo 这个名字的人也认为是在玩魔法这个词。所以你们俩都是对的,你和Javateer。两种解释都只是阐明了同一主题的两个方面。我觉得这里没有矛盾,不是吗? @codefan-BK 用“Magical”替换“Maven”这个词会删除底层框架......所以是的,我会感到矛盾:)【参考方案4】:

MOJO (Maven Old Java Object) 是 Maven 中的一个目标.

在 maven 中,一切都由插件完成,一个插件有一个或多个相关的 mojo,即目标。

Mojo 是 maven 中的单个任务单元。

例如:elicpse:eclipse 以 eclipse 为目标的 eclipse 插件是一个 MOJO

【讨论】:

以上是关于什么是 Maven 中的 MOJO?的主要内容,如果未能解决你的问题,请参考以下文章

未能执行目标 org.codehaus.mojo:exec-maven-plugin:1.6.0:java

从自定义 mojo 访问 maven 插件的运行时配置的最佳方式?

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

从 Maven 中的 POM 文件中读取属性文件

将价值从 Mojo 传递到 pom

我应该使用啥版本的 Java 来开发我的 MOJO Maven 插件?