maven-archetype-mojo和maven-archetype-plugin有什么区别?

crn*_*nlx 8 java maven-plugin maven-3 maven

从运行命令的输出的片段mvn archetype:generate > a.txt:

332: remote -> org.apache.maven.archetypes:maven-archetype-mojo (An archetype which contains a sample a sample Maven plugin.)
333: remote -> org.apache.maven.archetypes:maven-archetype-plugin (An archetype which contains a sample Maven plugin.)
Run Code Online (Sandbox Code Playgroud)

运行以下命令生成了几乎相同的pom文件和Java源类:

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app-plugin -DarchetypeArtifactId=maven-archetype-plugin -DinteractiveMode=false

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app-mojo -DarchetypeArtifactId=maven-archetype-mojo -DinteractiveMode=false
Run Code Online (Sandbox Code Playgroud)

那么maven-archetype-mojo和之间的区别是什么maven-archetype-plugin?这些中的任何一个都会生成一个示例插件项目吗?为什么我们两个都有?

Mar*_*szS 5

没有区别。Maven Mojo 是一个最小的 Maven 插件。

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

我认为我们不需要两者,只是 Maven 世界中的一些混乱:)