簡體   English   中英

Maven如何理解release:prepare命令?

[英]How does Maven understand release:prepare command?

我正在嘗試創建一個插件,該插件將從Maven Central下載並安裝jars作為系統工具。 所以我希望我的台詞像

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

類似於Ruby的

gem install capistrano

該插件將收集有關從JAR創建的快捷方式的所有必需信息。 即,此jar將包含實現安裝接口的類。

Maven如何理解,要執行諸如release:prepare之類的命令,它需要下載並運行release插件? 有更好的/其他方法嗎?

您是說如何定義comamnd行中的插件/目標與插件實現之間的關系? 然后答案是plugin.xml 請參閱plugin.xml中的發行插件,例如maven-release-plugin-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中。
  • 如果要讓您的構建在其他計算機上工作,則應將POM或settings.xml中的<pluginRepositories>指向插件存儲庫

在您自己的項目中使用默認的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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM