如何編寫一個Maven插件

jopen 10年前發布 | 48K 次閱讀 Maven 項目構建

本文基于eclipse ee.

  • 建立一個maven插件工程:
  • </ul>

        如何編寫一個Maven插件

    • 主要就是讓項目能依賴maven-plugin-api:
    • </ul>

          如何編寫一個Maven插件

      • 編寫一個Mojo類:
      • </ul>
        /**

        • 用于輸出消息的Mojo
        • @goal hello */ public class HelloMojo extends AbstractMojo {

          /**

          • @parameter expression="${echo.message}" default-value="Hello Maven World..." */ private Object message;

            public void execute() throws MojoExecutionException { getLog().info(message.toString()); } }</pre>

            • 安裝到本地 mvn install
            • 運行插件:

                如何編寫一個Maven插件

                如何編寫一個Maven插件

            • 但是對于上面我們運行插件時要寫這么多<groupId>:<artifactId>:<version>:goal是一件比較痛苦的事,我們需要配置一個前綴來運行我們的插件,比如hello:hello即表示運行hello-mave-plugin的hello的目標:

                  配置M2_HOME/settings.xml添加插件組:

            <pluginGroups>
            <!--  插件的groupId -->
            <pluginGroup>org.idestiny.learn.maven</pluginGroup>
            </pluginGroups>
                  于是你可以通過前綴來運行插件目標,那么mvn默認會以{prefix}-maven-plugin或maven-{prefix}-plugin去找對應的插件,在這里prefix即為hello:

                  如何編寫一個Maven插件

            那么如何在我們install我們的插件時就指定其前綴,而不是像上面這樣,我們需要在build插件時,加上一個插件即可,加入配置到pom.xml:  

            <build>
                <plugins>
            <!-- 配置本插件的前綴, 則可以通過 abcd:hello 運行本插件目標hello -->
            <plugin>
                <artifactId>maven-plugin-plugin</artifactId>
                <version>2.3</version>
                <configuration>
              <goalPrefix>abcd</goalPrefix>
                </configuration>
            </plugin>
                </plugins>
            </build>
            • mvn install安裝插件,運行插件abcd:hello:

                如何編寫一個Maven插件

            具體其他一些api細節可以參考:

            http://maven.apache.org/developers/mojo-api-specification.html

            來自:http://my.oschina.net/indestiny/blog/290061

            </span>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!