maven插件開發(fā)及調(diào)試方法

一夹抗、maven插件的開發(fā):

1绳慎、首先隨便創(chuàng)建一個maven工程。

2漠烧、然后在pom.xml文件中添加依賴:

        <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>

這時還要添加一下打包方式:

<packaging>maven-plugin</packaging>

然后就可以隨便創(chuàng)建一個類來繼承AbstractMojo類并重寫execute()方法就可以了杏愤。

@Mojo( name = "exportDataToFile")
public class WriteDataToFile extends AbstractMojo {
    @Override
    public void execute() throws MojoExecutionException, MojoFailureException {
    ...//要執(zhí)行的代碼
    }
}

基本一個最簡單的插件就寫完了。
執(zhí)行install命令就可以將程序打成jar包并放入你所綁定的maven庫了已脓。

二珊楼、Maven插件的調(diào)試

以IntelliJ IDEA為例,通常我們調(diào)試項目時度液,都是直接點擊 debug調(diào)試按鈕即可厕宗。但maven編寫的插件就不同了,由于插件需要打包成Jar加載到項目中堕担,所以如果我們需要在編寫插件源碼時調(diào)試的話已慢,就不能直接點擊調(diào)試按鈕了(因為沒有Main類),那么該怎么辦呢照宝?

這里提供一種簡單解決辦法:
假設(shè)及正在編寫的maven插件A擁有如下坐標(biāo):

<groupId>com.xx</groupId>
<artifactId>exportDataToFile</artifactId>
<version>1.0.0</version>

再假設(shè)你想將這個插件A用在某個項目B中蛇受,而項目B中的pom.xml是這樣定義這個插件的:

<plugin>
    <groupId>com.xx</groupId>
    <artifactId>exportDataToFile</artifactId>
    <version>1.0.0</version>
    <executions>
         <execution>
              <id>exportDataToFile</id>
              <phase>compile</phase>
              <goals>
                  <goal>exportDataToFile</goal>
              </goals>
         </execution>
     </executions>
</plugin>

其中,exportDataToFile 即為你要調(diào)試的目標(biāo)的名字厕鹃。

那么可以在Terminal中輸入一下命令啟動監(jiān)聽端口:

mvnDebug com.xx:exportDataToFile:1.0.0:exportDataToFile

可能到這時還是不知道這么做有什么用兢仰,好像和我們想做的事沒什么關(guān)系乍丈,這里做完以上步驟后項目B就不用再管了,這時我們要到之前開發(fā)插件A的源代碼中去打斷點把将,什么意思轻专?就是和正常項目一樣在A中你要測試的地方打上斷點。
選中插件本身在鼠標(biāo)右鍵debug運(yùn)行就可以進(jìn)入斷點模式了察蹲,如下圖:

如果發(fā)現(xiàn)自己這里沒有自己要的插件的選項(這就尷尬了)请垛,那就在該項目pom.xml文件中引入本身(你引入的不是項目本身,而是編譯打包后的jar包)洽议,實在不行就照著一下代碼寫就行了(可以百度一下各參數(shù)的含義):

<build>
        <finalName>xx</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>com.xx</groupId>
                <artifactId>exportDataToFile</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <outDir>xxx.xxx.xxx</outDir>
                    <configFile>xxx.xxx.xxx</configFile>
                </configuration>
            </plugin>
        </plugins>
    </build>

最后調(diào)完不要忘記關(guān)閉B項目的監(jiān)聽端口宗收,快捷鍵Ctrl+C行了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末亚兄,一起剝皮案震驚了整個濱河市混稽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌审胚,老刑警劉巖匈勋,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異膳叨,居然都是意外死亡洽洁,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門菲嘴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來饿自,“玉大人,你說我怎么就攤上這事龄坪×祝” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵悉默,是天一觀的道長。 經(jīng)常有香客問我苟穆,道長抄课,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任雳旅,我火速辦了婚禮跟磨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘攒盈。我一直安慰自己抵拘,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布型豁。 她就那樣靜靜地躺著僵蛛,像睡著了一般尚蝌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上充尉,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天飘言,我揣著相機(jī)與錄音,去河邊找鬼驼侠。 笑死姿鸿,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的倒源。 我是一名探鬼主播苛预,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼笋熬!你這毒婦竟也來了热某?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤突诬,失蹤者是張志新(化名)和其女友劉穎苫拍,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旺隙,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绒极,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蔬捷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垄提。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖周拐,靈堂內(nèi)的尸體忽然破棺而出铡俐,到底是詐尸還是另有隱情,我是刑警寧澤妥粟,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布审丘,位于F島的核電站,受9級特大地震影響勾给,放射性物質(zhì)發(fā)生泄漏滩报。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一播急、第九天 我趴在偏房一處隱蔽的房頂上張望脓钾。 院中可真熱鬧,春花似錦桩警、人聲如沸可训。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽握截。三九已至飞崖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間川蒙,已是汗流浹背蚜厉。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留畜眨,地道東北人昼牛。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像康聂,于是被迫代替她去往敵國和親贰健。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Maven的基本了解 什么是Maven恬汁? Maven就是Apache下的一個開源項目伶椿。它是用純java開發(fā)的。是一...
    Bcome閱讀 2,820評論 0 7
  • 所有項目的構(gòu)建都是有生命周期的氓侧,這個生命周期包括:項目清理脊另、初始化、編譯约巷、測試偎痛、打包、集成測試独郎、驗證踩麦、部署、站點生...
    zlcook閱讀 2,769評論 0 21
  • Maven編譯代碼的相關(guān)命令 第一氓癌、main目錄下的主代碼編寫完畢后谓谦,使用Maven進(jìn)行編譯,在項目根目錄下運(yùn)行命...
    加油小杜閱讀 1,190評論 0 2
  • 第一周靜態(tài)的花草樹練完以后贪婉,就可以稍微增加一點點難度反粥,開始嘗試畫動物了。 說到畫動物疲迂,我就想到我們中國的十二生肖星压,...
    阿洋洋的小世界與大夢想閱讀 1,597評論 6 18
  • 1.下山查案 燕山真是一個遠(yuǎn)離世間的世外桃源,燕山異人府的弟子肖白盤腿坐在路中間感嘆鬼譬,他下山都兩天了,走了一百多里...
    吾名錦繁閱讀 1,000評論 0 3