Maven如何理解发布:准备命令?

时间:2013-09-29 14:49:02

标签: java maven maven-release-plugin

我正在尝试创建一个插件,可以从Maven中心下载并安装jar作为系统工具。所以我希望我的行像

mvn install-plugin:install org.chaschev:cap4j:1.0

类似于Ruby的

gem install capistrano

此插件将收集有关从JAR创建的快捷方式的所有必需信息。即这个jar将包含一个实现安装接口的类。

Maven如何理解为了执行像release:prepare这样的命令,它需要下载发布插件并运行它?有更好的/其他方式吗?

2 个答案:

答案 0 :(得分:1)

你的意思是如何定义comamnd行中的插件/目标与插件实现之间的关系?然后答案是plugin.xml。请参阅plugin.xml以获取发布插件,例如行家离型插件-2.0.jar:

<goalPrefix>release</goalPrefix>
...
  <mojos>
    <mojo>
      <goal>help</goal>
      ...
    <mojo>
      <goal>prepare</goal>
      ...

或者你的意思是,Maven如何发现哪些插件可用?然后答案是:

  • 搜索插件有两个默认组,org.apache.maven.pluginsorg.codehaus.mojo
  • 对于您自己的插件,您可能需要使用名称${prefix}-maven-plugin,例如cap4j-maven-plugin
  • 您可以保留自己的姓名cap4j,然后将插件说明放在<plugins>
  • 下的POM中
  • 如果您希望您的构建在其他计算机上运行,​​则应将<pluginRepositories>指向POM或settings.xml中的插件存储库

答案 1 :(得分:0)

将默认Maven组用于您自己的项目并不好。 相反,为您的插件定义自己的组,如下所示:

<pluginGroups>
  <pluginGroup>org.chaschev</pluginGroup>
</pluginGroups>

并将您的插件从cap4j重命名为cap4j-maven-plugin。然后,Maven将在POM中发现你的插件,而不会再进行任何改变。

替代方案,没有<pluginGroups>,只需将以下内容放入您的POM:

<plugins>
  <plugin>
    <groupId>org.chaschev</groupId>
    <artifactId>cap4j</artifactId>
    <version>...</version>
    <configuration>
      ...
    </configuration>
  </plugin>
  ...
</plugins>