Maven插件前缀解析似乎没有按预期工作

mys*_*cks 5 maven

我已经为特定的应用需求创建了一个MOJO.我已经遵循maven的指导命名插件,所以我没有提到完整

mvn groupId:artifactId:version:goal
Run Code Online (Sandbox Code Playgroud)

用于执行我的插件(我将其命名为匹配格式$ {prefix} -maven-plugin).我甚至在插件POM的配置部分中包含了'goalPrefix'属性.以下是我对插件的POM所做的嗅探:

<configuration>
  <goalPrefix>${prefix}</goalPrefix>
</configuration>
Run Code Online (Sandbox Code Playgroud)

但我仍然无法执行我的插件,mvn ${prefix}:goal因为它抱怨它无法在任何存储库中找到插件.我仍然不得不使用mvn groupId:artifactId:version:goal任何想法为什么?

Ste*_*stl 5

默认情况下,Maven仅识别具有组ID org.apache.maven.plugins和的插件org.codehaus.mojo.如果您的插件具有不同的组ID(应该是这种情况),则需要将此组ID作为插件组添加到Maven settings.xml文件中:

<settings>
  ...
  <pluginGroups>
    <pluginGroup>the.groupid.of.my.plugin</pluginGroup>
  </pluginGroups>
  ...
</settings>
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请查看Maven设置参考.

  • @mystarrocks 没有默认目标之类的东西。然而,maven知道[生命周期阶段](http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html)的概念,例如`compile`,`test`,`install`等等。maven插件可以绑定到这样的生命周期阶段。例如,如果您将插件绑定到 `package` 阶段,则只需运行 `mvn package` 而不是 `mvn &lt;yourplugin&gt;:&lt;goal&gt;`。 (2认同)