<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Idea開發(fā)maven插件

          共 2806字,需瀏覽 6分鐘

           ·

          2021-08-19 13:27

          今天又是遠(yuǎn)程上班,早上起來沒啥事寫一篇博客吧。咋就把這個(gè)寫文章當(dāng)干飯一樣,寫一篇就是一篇。今天我們來學(xué)一下maven插件的開發(fā),首先說一下maven有什么用吧,我們知道m(xù)aven有clean、build、package、install、deploy等過程。也就是說我們做maven插件無非就是想在maven流程中加入自己的一些東西,比如如果項(xiàng)目中用到了checkstyle做代碼校驗(yàn)這種場(chǎng)景,除此之外還有maven插件獨(dú)立運(yùn)行的情況,比如mybatis逆向生成mapper的時(shí)候是獨(dú)立于maven流程之外的存在,需要我們自己手動(dòng)去觸發(fā)。目前作者知道的就這兩種插件模式。總結(jié)一下就是內(nèi)嵌于maven的主流程的插件,再或者獨(dú)立運(yùn)行的maven插件。這塊我們將兩者都演示一下。
          1.在idea創(chuàng)建maven工程,項(xiàng)目模板選擇mojo
          項(xiàng)目創(chuàng)建好之后,我們刪除自動(dòng)生成的Mojo類。我們看到生成的mojo類繼承了AbstractMojo類。所以說吶,我們開發(fā)插件也必然是通過重寫Abstractmojo類的方法實(shí)現(xiàn)的。我們重新定義mojo類,然后變成這樣。
           @goal CustomMavenMojo:表示該插件的服務(wù)目標(biāo) @phase compile:表示該插件的生效周期階段 @requiresProject false:表示是否依托于一個(gè)項(xiàng)目才能運(yùn)行該插件 @parameter expression="${name}":表示插件參數(shù),使用插件的時(shí)候會(huì)用得到 @required:代表該參數(shù)不能省略
          當(dāng)然這塊的注解還有很多,基本這些就滿足日常使用了。
          maven install
          在我們的目標(biāo)項(xiàng)目中,我們引入這個(gè)插件。
          引入插件之后,我們執(zhí)行一下這里的maven指令。
          這塊我們的目標(biāo)就達(dá)成了。
          但是如果我們想讓我們的插件在maven的生命周期內(nèi)執(zhí)行怎么做吶?這塊我們應(yīng)該在maven插件中指定插件執(zhí)行的階段。
                      <plugin>                <groupId>org.example</groupId>                <artifactId>TestMojo</artifactId>                <version>2</version>                <configuration>                    <name>tianjingle</name>                </configuration>                <executions>                    <execution>                       //在install階段執(zhí)行                        <phase>install</phase>                        <goals>                             //這塊可以添加多個(gè)                            <goal>tianjingle</goal>                        </goals>                    </execution>                </executions>            </plugin>
          在指定了執(zhí)行的階段之后,我們隨便指定指定的階段,發(fā)現(xiàn)我們的插件并沒有執(zhí)行哦。
          我們?cè)儆胕nstall來測(cè)試一下。
          至此我們開頭說的maven插件的兩個(gè)功能已經(jīng)完成了,因?yàn)椴寮拈_發(fā)很簡(jiǎn)單。所以這塊也不知道總結(jié)個(gè)啥了。這個(gè)maven插件主要用于對(duì)項(xiàng)目進(jìn)行一些統(tǒng)一的修改。之前說的那兩個(gè)場(chǎng)景,還有其他的各種插件,比如數(shù)據(jù)庫(kù)sql管理的那些插件,這塊作者也忘了名字叫啥了。
          當(dāng)然我們這塊實(shí)現(xiàn)插件使用@注釋的方式,其實(shí)還有更現(xiàn)代化的方式,也就是去@注釋,采用@注解。這塊需要引入maven依賴。
              <dependency>      <groupId>org.apache.maven.plugin-tools</groupId>      <artifactId>maven-plugin-annotations</artifactId>      <version>3.2</version>      <scope>provided</scope>    </dependency>    <dependency>      <groupId>org.codehaus.plexus</groupId>      <artifactId>plexus-utils</artifactId>      <version>3.0.8</version></dependency>
          相關(guān)的代碼改造為:
          @Mojo(name = "tianjingle")  //相當(dāng)于@goal注釋public class TestMojo extends AbstractMojo {    //相當(dāng)于@parameter注釋    @Parameter(readonly = false,defaultValue = "tianjingle",property = "name")    private String name;
          public void execute() throws MojoExecutionException, MojoFailureException { System.out.println("test mojo ....."); System.out.println("---"+name); }}
          文章到這里吶,我們就基本會(huì)開發(fā)maven插件了,大家閑了可以實(shí)踐一下。


          早~


          瀏覽 39
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲高清无码视频在线免费观看 | 国产毛片欧美毛片高潮 | 无码精品人妻一区二区三区漫画 | av先锋影音在线 c逼视频香蕉视频 | 99精品国产综合久久久久久欧美 |