精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

怎么寫一個Maven插件來提升生產效率?

開發 開發工具
通過maven插件,可以根據我們的項目,定義一些重復,但耗時的編碼工作,通過插件的形式,可以自動化完成這些工作,從而提高開發效率。

Maven 插件

如果你的項目是基于maven構建,那么在項目的pom文件中,經常會看到這樣的配置

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>

在上面的代碼中,我們使用了插件maven-compiler-plugin,這個插件的作用是將編寫的java代碼編譯成指定的版本與編碼的class文件。

Maven插件的組成

  • goal

maven中的插件是有很多目標(goal)組成的,開發插件,實際上就是去編寫插件中目標的具體代碼。每個目標對應一個java類,這個類在maven中叫做MOJO,maven提供了一個Mojo的接口,我們開發插件也就是去實現這個接口

org.apache.maven.plugin.Mojo

通過goal我們可以定義插件在maven哪個生命周期中執行,比如上面的maven-compiler-plugin在compile階段執行。

  • configuration

插件執行階段,我們可以通過配置定義各種參數,這樣就能根據不同參數按需求執行插件,比如上面的maven-compiler-plugin中,在configuration 下的配置

<configuration>
    <source>1.8</source>
    <target>1.8</target>
    <encoding>UTF-8</encoding>
</configuration>

maven-compiler-plugin的配置信息中,source和target屬性指定了編譯的java版本,encoding屬性指定了編譯結果的編碼。

Maven插件的分類

Maven插件分為兩種:

  • 核心插件:Maven自帶的插件,如maven-compiler-plugin,maven-surefire-plugin等。
  • 非核心插件:第三方開發的插件,如sonar-maven-plugin,pmd-maven-plugin等。

插件的生命周期

Maven插件的生命周期分為三個階段:

  • 初始化階段:在這個階段,Maven會將插件的配置信息加載到一個org.apache.maven.plugin.Plugin對象中,這個對象中包含了插件的配置信息,如插件的id,version,dependencies等。
  • 執行階段:在這個階段,Maven會調用插件的execute()方法,這個方法就是插件的核心,這個方法的執行是有順序的,先執行initialize()方法,然后執行execute()方法
  • 銷毀階段:在這個階段,Maven會調用插件的cleanup()方法,這個方法的執行是無順序的,先執行execute()方法,然后執行cleanup()方法。

Maven插件的執行

Maven插件的執行分為兩種:

  • 手動執行:在命令行中,使用mvn插件的id,如mvn compiler:compile,這個命令會先執行插件的初始化階段,然后執行插件的執行階段,最后執行插件的銷毀階段。
  • 自動執行:在pom.xml文件中配置插件的執行,如maven-compiler-plugin,這個配置會先執行插件的初始化階段,然后執行插件的執行階段,最后執行插件的銷銷毀階段。

比如基于idea時,我們可以在Maven工具欄,通過Lifecycle菜單中,選擇相應的生命周期函數,然后點擊Run按鈕,即可執行插件。比如插件配置的在compile階段執行,那么配置在compile對應的goal都會觸發。

同樣我們可以直接通過mvn命令調用插件,這樣插件就不需要依賴于maven的生命周期函數取執行了。

// mvn groupId:artifactId:goal -Dprop=value
mvn com.sucls.blog:build-maven-plugin:printDate -Dname=XX

如何寫一個Maven插件?

下面通過一個簡單的示例來演示如何寫一個Maven插件。

  1. 創建一個maven項目
  2. 添加相關依賴
<dependencies>
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-plugin-api</artifactId>
            <version>${maven-plugin-api.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.maven.plugin-tools</groupId>
            <artifactId>maven-plugin-annotations</artifactId>
            <version>${maven-plugin-annotations.version}</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
  1. 編寫插件代碼
@Mojo(name = "printDate")
public class PrintDatePlugin extends AbstractMojo {

    @Parameter(property = "name",defaultValue = "printDate")
    private String name;

    @Parameter(property = "description",defaultValue = "打印日期插件")
    private String description;

    @Parameter(property = "format",defaultValue = "yyyy-MM-dd HH:mm:ss")
    private String format;

    @Override
    public void execute() throws MojoExecutionException, MojoFailureException {
        Date date = new Date();
        Log log = getLog();
        log.info(StringUtils.repeat("=",20));
        log.info(String.format("開始執行插件:%s", name));
        log.info(String.format("插件信息:%s", description));
        log.info(String.format("執行插件:%s", DateFormatUtils.format(date,format)));
        log.info(StringUtils.repeat("=",20));
    }
}
  1. 打包插件
// 執行下面的命令 或者通過 idea中maven工具欄的package直接打包
mvn clean package
  1. 使用插件 創建一個新的項目,在pom.xml中添加插件的配置信息
<build>
    <plugins>
      <plugin>
        <groupId>com.sucls.blog</groupId>
        <artifactId>build-maven-plugin</artifactId>
        <version>${project.version}</version>
        <executions>
          <execution>
            <id>print-date</id>
            <phase>compile</phase>
            <goals>
              <goal>printDate</goal>
            </goals>
            <configuration>
              <name>PD</name>
              <format>yyyy-MM-dd</format>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  1. 執行插件
mvn clean complie

觀察控制臺可以看到這樣的信息:

[INFO] --- build-maven-plugin:1.0-SNAPSHOT:printDate (print-date) @ build-maven-plugin ---
[INFO] 
[INFO] ===============
[INFO] 開始執行插件:PD
[INFO] 插件信息:打印日期插件
[INFO] 執行插件:2023-12-05
[INFO] ===============

上面的示例中,主要做了下面的事情:

  1. 定義了一個打印日期的插件 也就是一個maven項目
  2. 為插件定義goal 一個goal也就是一個org.apache.maven.plugin.Mojo類,通過@Mojo注解,定義了插件的名稱和goal,一個插件中可以包含多個goal,在配置時同樣可以對應多個
  3. 為插件添加參數 在每一個Mojo中,通過@Parameter定義插件相關參數,這樣在插件執行階段即可通過參數完成對應邏輯
  4. 在其他項目中引入插件 在pom文件中,像其他插件一樣通過groupId:artifactId:version引入自己定義的插件,配置maven的哪個生命周期階段執行插件的goal,以及插件的參數。
  5. 使用插件 maven生命周期中,各個階段都會找到所關聯的插件并執行。

結束語

通過maven插件,可以根據我們的項目,定義一些重復,但耗時的編碼工作,通過插件的形式,可以自動化完成這些工作,從而提高開發效率。


責任編輯:武曉燕 來源: Java技術指北
相關推薦

2021-07-06 05:36:52

VS code插件編程

2023-04-30 23:09:50

2018-05-05 09:00:40

生產效率

2024-01-15 00:08:51

插件Code效率

2020-04-02 09:31:49

微前端架構系統

2014-04-03 10:46:12

Dockermaven

2018-02-24 12:08:52

Python開發技巧

2023-12-09 18:02:34

工具Code插件

2010-09-14 23:00:08

生產效率網絡行為監控科盾

2010-09-13 19:23:02

網絡監控科盾

2018-01-19 22:36:23

idea插件編碼

2025-05-16 09:15:30

2013-03-11 16:50:56

效率項目開發效率

2023-12-28 08:01:59

2025-09-01 04:00:15

VSCode插件Github

2024-12-31 00:00:00

VS Code插件工具開發者

2025-04-28 10:16:35

VSCode插件開發

2022-05-30 14:33:55

MLOpsIDC人工智能

2017-06-22 09:45:58

阿里云GN5實例深度學習

2025-06-03 08:55:00

JavaScriptelse編程
點贊
收藏

51CTO技術棧公眾號

日韩综合在线观看| 欧美高清一级片在线| 亚洲免费精彩视频| 神马影院午夜我不卡影院| 日本aⅴ在线观看| 久久五月精品| 国产成人夜色高潮福利影视| 免费成人在线观看| 精品国产91乱码一区二区三区 | jizz国产免费| av在线不卡精品| 成人毛片老司机大片| 久久久精品国产| 成人免费xxxxx在线视频| 成人爽a毛片一区二区| 99国内精品久久久久久久| 无吗不卡中文字幕| 成人a级免费视频| 免费在线观看a视频| 爱情电影社保片一区| 99久久综合狠狠综合久久| 久久99国产综合精品女同| 911福利视频| 91女主播在线观看| 天堂va蜜桃一区二区三区漫画版| 日韩精品在线视频| av免费观看网| 午夜视频福利在线| 亚洲少妇一区| 日韩成人黄色av| 波多野结衣之无限发射| 性xxxx18| 国产精品456| 色综合久久悠悠| wwwwwxxxx日本| 天堂网在线最新版www中文网| 波多野结衣中文字幕一区 | 国产精品高清一区二区 | 国产欧美一区二区在线播放| 久久久久久久久久97| 福利视频一区| 1000精品久久久久久久久| 国产一区视频在线播放| 亚洲天堂黄色片| 日韩免费一区| 91精品国产综合久久婷婷香蕉| 中文字幕制服丝袜在线| 国产三级伦理片| 亚洲人体av| 亚洲成人性视频| 毛片av免费在线观看| www.亚洲视频| 国产一区二区在线观看视频| 欧美巨大黑人极品精男| 美国黄色特级片| 99热这里有精品| 亚洲国产精品视频| 欧美精品二区三区四区免费看视频| 久久精品视频7| 日韩精品一区二区久久| 亚洲欧美日韩中文在线制服| 免费无码一区二区三区| 欧美一级二级视频| 在线观看av一区| 欧美三级午夜理伦三级老人| 人妻无码中文字幕免费视频蜜桃| 久久精品人人做人人爽电影蜜月| 日韩亚洲欧美中文高清在线| 原创真实夫妻啪啪av| 极品视频在线| 国产精品久久久久久久久果冻传媒 | 日本成人午夜影院| 极品美女一区二区三区| 538在线一区二区精品国产| 在线观看免费不卡av| 2019中文亚洲字幕| 欧美大胆人体bbbb| 国产精彩免费视频| 成人国产精品| 欧美一区二区视频在线观看| av动漫在线观看| 午夜伦理大片视频在线观看| 久久久久久黄色| 91在线观看免费网站| 亚洲视频免费播放| 五月天久久777| 欧美激情网站在线观看| 美国精品一区二区| 美女久久久久| 亚洲丁香婷深爱综合| aaaaa一级片| 视频二区欧美| 欧美日韩在线播放三区四区| 777777av| 小明成人免费视频一区| 日韩久久精品一区| 亚洲区免费视频| 欧美变态网站| 精品国产乱码久久久久久蜜臀 | 一级特黄免费视频| 136国产福利精品导航网址| www.亚洲一区| 黄色小视频在线免费看| 综合久久99| 91sao在线观看国产| 欧美成人免费观看视频 | 最近中文字幕一区二区| 蜜桃视频在线观看播放| 亚洲一区视频在线| 中文字幕一区二区三区有限公司| 青青草免费在线视频| 粉嫩av一区二区三区在线播放| 国产欧美一区二区三区久久人妖 | 亚洲国产三级网| 国产在线a视频| 精品国产亚洲一区二区三区| 欧美日韩国产天堂| 五月婷婷之婷婷| 欧美理论电影在线精品| 麻豆乱码国产一区二区三区| 免费黄色激情视频| 国产日韩欧美一区在线| 91香蕉电影院| sese一区| 色哟哟亚洲精品| 国产午夜伦鲁鲁| 人在线成免费视频| 日韩欧美国产综合在线一区二区三区| 六月婷婷七月丁香| 亚洲视频播放| 97在线资源站| 天天综合天天综合| 久久这里只精品最新地址| 精品国产乱码久久久久久丨区2区 精品国产乱码久久久久久蜜柚 | 亚洲欧美日韩国产综合| 欧美精品欧美精品| 中日韩高清电影网| 亚洲制服丝袜一区| 黄页网站大全在线观看| 国产一区二区三区视频在线| 在线观看中文字幕亚洲| 911国产在线| 肉丝袜脚交视频一区二区| 国产欧美欧洲在线观看| 国产精品国产三级国产普通话对白 | 久久久久97| 日韩精品在线观看一区二区| 久久成人在线观看| 亚洲欧美日韩国产一区| 国产精品激情自拍| 国产绳艺sm调教室论坛| 国产精品久久久久久亚洲伦| 国产性生活免费视频| 国产理论在线| 亚洲第一中文字幕| 亚洲国产成人精品激情在线| 北条麻妃一区二区三区| 黄色三级中文字幕| 欧美成人a交片免费看| 911精品国产一区二区在线| 呻吟揉丰满对白91乃国产区| 日韩电影在线观看网站| 午夜精品电影在线观看| 欧美黄页免费| 亚洲国产天堂久久国产91 | 色综合久久久久综合99| 黑人巨大精品欧美| 日本一不卡视频| 91超碰rencao97精品| 手机在线免费看av| 亚洲加勒比久久88色综合| 91国产丝袜播放在线| 日韩av在线发布| 午夜精品亚洲一区二区三区嫩草 | 亚洲精品免费一区二区三区| 天天综合网天天综合| 色综合激情五月| 九九热久久免费视频| 国产一区二区电影| 精品人妻少妇一区二区| 日韩福利影视| 亚洲欧洲美洲在线综合| 中文字幕第28页| 99在线精品免费| 手机在线看福利| 亚洲成人一品| 久久久噜噜噜久久| 国产美女三级无套内谢| 亚洲自拍偷拍九九九| 尤物视频最新网址| 紧缚捆绑精品一区二区| 色噜噜一区二区| 大胆国模一区二区三区| 91av在线免费观看| 国内精品久久久久国产| 亚洲成人精品久久久| 中文字幕在线播放av| 久久影院午夜论| 老司机午夜性大片| 国产日韩欧美三区| 欧美日韩一级在线| 天美av一区二区三区久久| 国内精品小视频在线观看| 黄色在线小视频| 日韩欧美在线观看视频| 性活交片大全免费看| 欧美在线91| 亚洲一区美女视频在线观看免费| 黄视频网站在线观看| 久久久精品美女| 精品欧美不卡一区二区在线观看 | 国产成人av在线| 天堂av在线免费| 欧美日本在线一区| www亚洲视频| 波多野结衣中文字幕一区二区三区| jizz大全欧美jizzcom| 欧美综合久久| 国产精品视频大全| 国产一级免费在线观看| 精品福利视频一区二区三区| 一区二区日韩视频| 亚洲男人的天堂在线aⅴ视频| 亚洲中文字幕一区| 国产成人精品三级| 国产欧美激情视频| 欧美日韩18| 国产亚洲福利社区| 精品视频一二| 成人看片人aa| 国产成人精品一区二区三区在线| 欧洲中文字幕国产精品| 美国成人毛片| 欧美美女一区二区三区| 无码无套少妇毛多18pxxxx| 婷婷综合另类小说色区| 久久国产在线观看| 一区二区三区国产精品| 亚洲精品久久久久久国| 国产精品看片你懂得| 在线观看日本中文字幕| 精品一区二区三区免费| 男人添女人荫蒂免费视频| 在线日韩网站| 久久视频在线观看中文字幕| 高清成人在线| 九九热精品视频| av网站免费在线观看| 伦伦影院午夜日韩欧美限制| 精产国品自在线www| 久久久国产91| 亚洲欧美成人影院| 久久97精品久久久久久久不卡| 成人日韩欧美| 亚洲精品少妇网址| 亚洲av成人精品毛片| 日韩电影中文字幕一区| 青春草在线观看| 国产一区二区动漫| 亚洲精品国产一区二| 在线免费视频一区二区| 波多野结衣家庭主妇| 欧美亚洲高清一区| 久久久久久久久久综合| 欧美国产激情二区三区 | 小黄鸭精品aⅴ导航网站入口| 青青久久av北条麻妃海外网| 色综合一本到久久亚洲91| 国产精品视频999| 蜜桃精品视频| 国内精品久久国产| 精品成人影院| 97在线电影| 蜜臀av一区| 三区精品视频观看| 你懂的视频一区二区| 91动漫在线看| 肉色丝袜一区二区| 欧美日韩一区二区区别是什么| 欧美一区=区| 一区二区三区 日韩| 国产精品99久久久久久有的能看| 欧美爱爱视频免费看| 午夜亚洲激情| 57pao国产成永久免费视频| 成人免费高清在线| 亚洲国产av一区| 玉米视频成人免费看| 亚洲熟女少妇一区二区| 久久女同互慰一区二区三区| 俄罗斯毛片基地| 一区二区在线免费观看| 国产精品久久久久久人| 欧美一级电影网站| 一级黄色片在线播放| 精品国产凹凸成av人网站| 日本护士...精品国| 久热国产精品视频| 欧美片第一页| 成人av男人的天堂| 538任你躁精品视频网免费| 亚洲www视频| 亚洲亚洲免费| 国产爆乳无码一区二区麻豆| 日韩黄色小视频| 中文字幕人妻一区| 国产精品网站在线播放| 日韩久久久久久久久| 欧美高清hd18日本| 国产在线中文字幕| 久久久久久国产精品久久| 成人在线高清| 欧美精品尤物在线| 亚洲无线视频| 水蜜桃色314在线观看| 精品一区二区综合| 受虐m奴xxx在线观看| 亚洲国产精品久久人人爱| 91在线你懂的| 国产亚洲精品一区二555| 不卡视频观看| 成人欧美一区二区| 一区中文字幕电影| 在线观看成人av电影| 三级影片在线观看欧美日韩一区二区| 黄色av电影网站| 一区av在线播放| 国产剧情久久久| 最近2019年中文视频免费在线观看| 欧美一区二区三区在线观看免费| 久久精品视频99| 成人交换视频| 欧洲亚洲一区二区| 99久久www免费| 国产一级片黄色| www激情久久| 久久成人小视频| 欧美午夜宅男影院| 韩国三级在线观看久| 欧洲亚洲免费视频| 久久99国产成人小视频| 日本三级免费观看| www激情久久| 天堂网视频在线| 亚洲人成在线观看| 欧美福利在线播放| 亚洲第一综合| 欧美成熟视频| 日本特黄在线观看| 一区二区三区在线免费视频| 99热这里只有精品在线| 亚洲精品国产suv| missav|免费高清av在线看| 国产激情综合五月久久| 久久99久久人婷婷精品综合 | 7878成人国产在线观看| 黄色在线播放网站| 亚洲最大福利视频| 黄色成人精品网站| 国产精品一区二区入口九绯色| 欧美激情一区二区三区全黄| 久久久久亚洲av无码专区| 精品国产人成亚洲区| 91av久久| 裸模一区二区三区免费| 天堂网在线观看国产精品| 在线观看岛国av| 亚洲精品欧美专区| 全部免费毛片在线播放一个| 69精品小视频| 欧美a一欧美| 国内性生活视频| 亚洲国产精品ⅴa在线观看| 一级日韩一级欧美| 欧美极品美女电影一区| 国产精品网在线观看| 老熟妇仑乱视频一区二区| 自拍偷拍国产亚洲| 国产 日韩 欧美 精品| 日本亚洲欧美三级| 女人抽搐喷水高潮国产精品| aa在线免费观看| 中文字幕一区二区三区在线播放 | 日韩高清中文字幕| 99久久综合国产精品二区| a级网站在线观看| 91在线你懂得| 国产亚洲成人精品| 亚洲欧洲激情在线| 欧美午夜在线播放| 国产又黄又大又粗视频| 亚洲精品中文字幕乱码三区| 亚洲 美腿 欧美 偷拍| 国产在线999| 亚洲伊人网站| 成年人午夜剧场| 国产一区二区欧美日韩| 成午夜精品一区二区三区软件| 超碰成人在线免费观看| 99精品视频在线观看|