精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产一区二区三区播放| 成人午夜黄色影院| 99久久精品免费视频| 337p粉嫩大胆噜噜噜鲁| 精品无码人妻一区二区三区 | 7777奇米亚洲综合久久 | 亚洲字幕久久| 精品国偷自产国产一区| 久久无码高潮喷水| 在线视频91p| 成人国产亚洲欧美成人综合网| 欧美一区二区三区免费视| 长河落日免费高清观看| 超碰97久久国产精品牛牛| 色吊一区二区三区| 公共露出暴露狂另类av| 三级毛片在线免费看| 久久99精品久久只有精品| 久久久久久久久久久av| 欧美福利第一页| 第四色中文综合网| 欧美午夜精品一区二区三区| 久久久亚洲国产精品| 国外av在线| 成人免费的视频| 成人av资源在线播放| 日本在线播放视频| 亚洲国产精品久久久久蝴蝶传媒| 亚洲欧美日韩天堂一区二区| 亚洲精品国产一区二区三区| 小草在线视频免费播放| 亚洲免费三区一区二区| 三级三级久久三级久久18| 欧美 日韩 国产 在线| 狠狠狠色丁香婷婷综合久久五月| 国产成+人+综合+亚洲欧洲| 精品处破女学生| 五月激情久久久| 国产亚洲xxx| xxxx黄色片| 日韩欧美中文在线观看| 欧美日韩视频在线观看一区二区三区 | 亚洲第一页在线| 欧美一级片免费观看| 乱精品一区字幕二区| 久久精品免费观看| 国产精品99一区| 久久久久99精品成人片我成大片| 激情视频一区二区三区| 欧美成人一二三| 黑鬼狂亚洲人videos| 日韩一区二区在线免费| 中文字幕精品av| 丁香激情五月少妇| 精品国产一区一区二区三亚瑟| 日韩av影院在线观看| 国产大尺度视频| 亚洲一二av| 精品国精品国产尤物美女| 国产精品久久久久久9999| 色成人综合网| 91精品国产综合久久久久久久| 婷婷免费在线观看| 福利一区二区免费视频| 欧美日韩国产一区| 最新天堂在线视频| 国产精品美女久久久久人| 91麻豆精品国产91久久久使用方法 | 9久re热视频在线精品| 高清欧美电影在线| 国产成人无码一区二区三区在线| 国产亚洲欧洲| 国产精品嫩草影院一区二区 | 精品久久久久香蕉网| 国产精品99久久久精品无码| 国产极品模特精品一二| 亚洲国产精品热久久| 性色av蜜臀av色欲av| 久久最新网址| 在线观看日韩av| 永久免费看mv网站入口| 欧美日本不卡高清| 成人深夜视频在线观看| 久久91亚洲精品中文字幕| 久草视频免费播放| 亚洲精品精选| 国产精品a久久久久久| 亚洲在线精品视频| 国产乱对白刺激视频不卡| 国产精品日韩欧美一区二区三区 | 亚洲欧美一区二区三区在线 | 国产一区二区三区日韩精品| 中文字幕精品国产| 手机在线免费看毛片| 伊人久久婷婷| 国产精品免费久久久久久| 91丨porny丨在线中文 | 欧美人与禽性xxxxx杂性| 国产综合欧美| 亚洲mv大片欧洲mv大片精品| 国产精品无码人妻一区二区在线| 精品3atv在线视频| 欧美一区二区三区日韩视频| 色哟哟无码精品一区二区三区| 亚洲日本三级| 久久最新资源网| 色婷婷在线观看视频| 蜜桃精品在线观看| 国产一区二区三区四区五区加勒比| 国产资源在线观看| 亚洲精品视频免费观看| 日韩a在线播放| 国产麻豆一区二区三区| 亚洲跨种族黑人xxx| 在线看的片片片免费| 免费在线成人| 高清国语自产拍免费一区二区三区| 精品av中文字幕在线毛片| 一区二区三区免费看视频| 春日野结衣av| aaa国产精品视频| 日韩中文字幕网站| 成人免费毛片男人用品| 国产福利91精品| 亚洲看片网站| 男人最爱成人网| 精品动漫一区二区三区在线观看| 中文乱码字幕高清一区二区| 亚洲免费网站| 精品伦精品一区二区三区视频| 成人在线影视| 欧美日韩你懂得| 级毛片内射视频| 国产精品入口66mio| 91久久伊人青青碰碰婷婷| 三区四区电影在线观看| 色婷婷av一区二区三区大白胸| www.啪啪.com| 欧美日韩网址| 99国产视频| 91最新在线视频| 91精品国产综合久久国产大片| 男女男精品视频网站| 老司机精品视频网站| 久久精品国产美女| 韩国日本一区| 精品国产亚洲在线| 一区二区成人免费视频| 韩国三级电影一区二区| 亚洲一区三区在线观看| 草民电影神马电影一区二区| 一区二区中文字幕| 久操视频在线免费观看| 国产午夜精品久久久久久久| 播放灌醉水嫩大学生国内精品| 欧美国产不卡| 日本午夜精品理论片a级appf发布| 欧洲成人av| 色呦呦一区二区三区| 国产吞精囗交久久久| 亚洲一区二区三区四区五区午夜| heyzo一本久久综合| caoporen国产精品| 亚洲h片在线看| 日韩精品一区二区三区四区视频| 久久久久久国产精品视频 | 91精品人妻一区二区三区蜜桃2 | 免费99精品国产自在在线| 国产绿帽刺激高潮对白| 一区二区三区在线免费视频 | 久久奇米777| 国产福利视频在线播放| 精品在线手机视频| 国产精品久久久久久久久影视| 日本在线免费| 日韩精品一区二区三区中文不卡| 日韩精品视频免费播放| 久久色中文字幕| 深夜黄色小视频| 午夜免费一区| 国外成人在线视频网站| 日本综合久久| 精品视频9999| 视频二区在线| 欧美巨大另类极品videosbest| 久久久久97国产| 久久久亚洲精品一区二区三区| 女同激情久久av久久| 亚洲午夜极品| 日韩高清av| 韩国三级成人在线| 97在线视频免费播放| 阿v免费在线观看| 日韩欧美国产综合| 国产成人无码一区二区在线播放| 国产精品成人一区二区三区夜夜夜| 女同性αv亚洲女同志| 国产精品久久久免费| 一级做a爰片久久| 国产精品香蕉| 国产成人精品久久亚洲高清不卡| 在线免费观看污| 亚洲天堂2020| 午夜精品亚洲一区二区三区嫩草 | 91视频免费看| 91女神在线观看| 国产亚洲永久域名| 影音先锋男人的网站| 国产日产一区| 国产激情一区二区三区在线观看| 韩国精品主播一区二区在线观看 | 亚洲一区三区| 丝袜美腿综合| 97人人模人人爽视频一区二区| 午夜欧美巨大性欧美巨大| 欧美寡妇偷汉性猛交| 国产69久久| 日韩大陆欧美高清视频区| 国产毛片毛片毛片毛片毛片| 在线免费亚洲电影| 日本网站免费观看| 亚洲人xxxx| 天天舔天天操天天干| 91亚洲精品一区二区乱码| 日韩av自拍偷拍| 日本伊人精品一区二区三区观看方式| 人人干视频在线| 欧美96在线丨欧| 在线播放豆国产99亚洲| 国产九一精品| 久久99精品久久久久久水蜜桃| 秋霞午夜一区二区三区视频| 国产在线a不卡| 国产精品亚洲d| 国产成人+综合亚洲+天堂| 一级一片免费看| 欧美日韩在线二区| 91手机视频在线观看| 日韩精品免费观看视频| 欧美与黑人午夜性猛交久久久| 福利小视频在线| 欧美国产高跟鞋裸体秀xxxhd| 黄网站app在线观看| 日韩中文在线中文网三级| 国产69精品久久app免费版| 一本一本久久a久久精品牛牛影视 一本色道久久综合亚洲精品小说 一本色道久久综合狠狠躁篇怎么玩 | 亚洲精品国产欧美| 亚洲精品久久久狠狠狠爱 | 国产精品高清免费在线观看| av日韩电影| 国产va免费精品高清在线观看| 亚洲精品福利电影| 欧美在线中文字幕| 欧美一区久久久| 国产精品电影网| 国产精品黄色片| 成人激情视频在线观看| 日韩欧美一区二区三区在线观看| 国产精品露脸自拍| 欧美网站免费| 91久久国产婷婷一区二区| 色成人综合网| 51精品国产人成在线观看| 日韩免费一级| 国产精品原创巨作av| 日韩欧美一区二| 亚洲一区图片| 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 日韩一级性生活片| 日韩视频三区| 色综合av综合无码综合网站| 久久深夜福利| 一本一道久久a久久综合蜜桃| 麻豆91在线播放免费| 国产福利精品一区二区三区| 成人免费高清视频| 国产精品20p| 日韩美女啊v在线免费观看| 美女毛片在线观看| 精品国产福利在线| 日韩中文字幕高清| 56国语精品自产拍在线观看| www.热久久| 亚洲欧美日韩综合| 蜜桃视频在线观看www社区| 欧美丰满少妇xxxx| 345成人影院| 亚洲最大成人免费视频| 女同另类激情重口| 一区二区三区av在线| 亚洲无线一线二线三线区别av| 无遮挡又爽又刺激的视频| 精品制服美女丁香| 欧类av怡春院| 亚洲欧美福利一区二区| 手机在线看片1024| 欧美一区二区视频网站| 青青草视频在线免费观看| 久久久999精品| 超碰aⅴ人人做人人爽欧美| 成人av在线天堂| 久操成人av| 久久久久福利视频| 日韩国产在线观看一区| 岛国大片在线免费观看| 国产人成一区二区三区影院| 久久精品第一页| 欧美三级一区二区| 色综合免费视频| 久久国产一区二区三区| 日韩精品专区| 国产欧美日本在线| 天天射综合网视频| 成年网站在线免费观看| 成人精品一区二区三区四区| 国产伦理片在线观看| 一区二区三区中文字幕精品精品| 怡春院在线视频| 日韩精品在线免费观看视频| 乱插在线www| 成人久久一区二区| 精品国产91乱码一区二区三区四区| 久久这里只有精品18| 黑人巨大精品欧美一区| 人妻少妇无码精品视频区| 精品久久在线播放| 性生交生活影碟片| 久久久av亚洲男天堂| 激情久久99| 日韩中文字幕av在线| 国产欧美丝祙| 亚洲欧美日韩色| 亚洲国产精品视频| 精品国自产拍在线观看| www.亚洲男人天堂| 国产精品99精品一区二区三区∴| 欧美一进一出视频| 国产精品三上| 国产亚洲无码精品| 亚洲18女电影在线观看| 丰满肥臀噗嗤啊x99av| 欧美成人高清视频| 国产亚洲久久| 欧美一级爱爱视频| 国产传媒欧美日韩成人| 国产精品视频一区二区三 | 日韩一级中文字幕| 欧美激情二区三区| 视频在线亚洲| 精品人妻人人做人人爽| 国产成人在线电影| 久久久精品国产sm调教网站| 精品久久久久久久人人人人传媒| jizz一区二区三区| 国产美女在线观看| 国产成人精品最新| 久久综合亚洲| 免费看污污网站| 中文字幕亚洲不卡| 国产视频在线免费观看| 欧美裸体xxxx极品少妇| 超碰97久久国产精品牛牛| 极品粉嫩国产18尤物| 91在线看国产| 国产亚洲欧美日韩高清| 中文字幕在线日韩| 国产95亚洲| 18禁裸男晨勃露j毛免费观看| 成人av网址在线| 亚洲精品男人的天堂| 国产香蕉精品视频一区二区三区| 粉嫩91精品久久久久久久99蜜桃| 青少年xxxxx性开放hg| 国产一区二区三区观看| 国产在线视频二区| 日韩精品免费看| 成人在线免费av| 欧美精品在欧美一区二区| 99久久精品免费精品国产| 国产成人无码av| 中文字幕视频一区二区在线有码 | 99电影在线观看| 中国女人久久久| 内射毛片内射国产夫妻| 日韩一区二区影院| 暖暖成人免费视频| 在线视频一二三区| av成人老司机| 亚洲一区二区色| 91黄色8090| 97精品一区| 亚洲一区二区三区无码久久| 欧美写真视频网站| 牛牛在线精品视频| 欧美激情导航| 国产精品一区二区你懂的| 美日韩一二三区| 久久精品成人动漫| 亚洲国产精品嫩草影院久久av| 午夜免费一级片|