Maven(四):寫一個maven插件


  • 在maven中,萬物皆是插件,他本身的主要功能也是依賴插件實現的,同時它也為我們提供了極其豐富的插件庫,最主要的就是https://maven.apache.org/plugins/http://www.mojohaus.org/plugins.html
  • 插件的使用
    • 在項目的pom文件中,build標簽下與一個plugins標簽,在里面可以定義多個插件;如下圖,可以看到這個maven工程里的所有插件,以及插件的功能

  • 手寫一個插件
    • 首先創建一個maven工程
    • 把pom里的packaging標簽的值改為maven-plugin
      <packaging>maven-plugin</packaging>
    • 引入依賴
      <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-plugin-api</artifactId>
      <version>3.5.0</version>
      </dependency>
      <dependency>
      <groupId>org.apache.maven.plugin-tools</groupId>
      <artifactId>maven-plugin-annotations</artifactId>
      <version>3.5</version>
      <scope>provided</scope>
      </dependency>
    • 創建class,繼承
      AbstractMojo.class
    • 重寫里面的execute方法
      public void execute() throws MojoExecutionException, MojoFailureException {
      System.out.println("具體業務");

      }
    • 在類上加注解
      @Mojo
    • 並指定name和defaultPhase,name的值就是當前的goal,defaultPhase就是這個goal所處在的phase
      @Mojo(name="lhy",defaultPhase = LifecyclePhase.PACKAGE)
    • 然后你的插件就寫完了,是不是很簡單。
  • 使用插件
    • 在項目中引入你的插件
      <build>
      <plugins>
      <plugin>
      <groupId>com.lhy</groupId>
      <artifactId>lhy-plugin</artifactId>
      <version>1.0-SNAPSHOT</version>
      </plugin>
      </plugins>
      </build>
    • 然后你就可以看到了

    • 雙擊他就可以直接運行。或者mvn lhy:lhy 也可以運行。
    • 但是有的時候我們需要傳參數,那么我們可以在插件里定義一個屬性,然后加上@Parameter注解,然后在調用的時候就可以傳入參數了
      @Parameter
      private String msg;
    • 執行命令mvn lhy:lhy -Dmsg=...就ok了
    • 到目前為止,我們的一個插件基本就完成了,從開發到使用都有了,但是所有的運行都是靠命令或者雙擊,怎么讓他自動運行呢
    • 其實可以在pom中配置
      <build>
      <plugins>
      <plugin>
      <groupId>com.lhy</groupId>
      <artifactId>lhy-plugin</artifactId>
      <version>1.0-SNAPSHOT</version>
      <configuration>
      <msg></msg>
      </configuration>
      <executions>
      <execution>
      <phase>install</phase>
      <goals>
      <goal>lhy</goal>
      </goals>
      </execution>
      </executions>
      </plugin>
      </plugins>
      </build>
    • configuration配置參數
    • execution配置執行的phase和goal
    • 然后當我們執行插件所在的phase時就會自動執行goal
  • 常用的插件
    • findbugs 靜態代碼檢查
    • versions 統一升級版本號
    • source 打包源代碼
    • assembly 打包zip、war
    • tomcat7


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM