maven插件調試方法


前言

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

解決方案一(直接在插件項目中調試)

假設及正在編寫的maven插件擁有如下坐標:

<groupId>myPluginGroupId</groupId>
<artifactId>myPluginArtifactId</artifactId>
<version>myPluginVersion</version>

再假設你想將這個插件用在某個項目中,而項目中的pom.xml是這樣定義這個插件的:

<plugin>
    <groupId>myPluginGroupId</groupId>
    <artifactId>myPluginArtifactId</artifactId>
    <version>myPluginVersion</version>
      <executions>
               <execution>
                     <id>myPluginGoal</id>
                     <phase>compile</phase>
                     <goals>
                          <goal>myPluginGoal</goal>
                     </goals>
               </execution>
          </executions>
</plugin>

其中,myPluginGoal 即為你要調試的目標。

那么可以在Terminal中輸入命令:

mvnDebug myPluginGroupId:myPluginArtifactId:myPluginVersion:myPluginGoal

然后,程序會自動分配8000 Listen端口。此時,在myPluginGoal對應的程序中打上斷點,再點擊調試按鈕,就可以調試啦!

解決方案二(目標項目和插件項目聯調)

這樣的調試方式其實是服務器客戶端的方式,目標項目是服務器,插件項目是客戶端;只不過服務器和客戶端都在我們本地電腦上。

首先在在目標項目中,增加Maven運行配置

進入配置后,先進入Parameters中,配置Command line:

myPluginGroupId:myPluginArtifactId:myPluginVersion:myPluginGoal -DgroupId=myPluginGroupId -DartifactId=myPluginArtifactId -Dversion=myPluginVersion

注:如果插件已經在目標項目的 pom 中定義,可以只寫myPluginGroupId:myPluginArtifactId:myPluginVersion:myPluginGoal,后面的 -DgroupId 等參數可以不寫。

其中 -D 是 maven 命令,可以在終端輸入 mvn -h 查看其作用:設置屬性。類似例子可參見 https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

再進入Runner, 不勾選“Use project settings”,配置VM Options:

其中的端口號可以改成其他的。

然后配置maven插件項目

增加Remote配置,並將其中的端口號改成和目標項目端口號相同的值即可。

現在可以開始調試啦

首先點擊目標項目的運行按鈕,啟動Listening...,再到插件項目中打好斷點、點擊調試按鈕,即可開始調試。

后記

調試的方法有多種,本文中的方法比較簡單,如有特殊需求可查詢其他方法。

另外,插件可以自定義前綴,方便實用。具體定義方式可查看官方文檔,本文不再贅述。

參考資料

《Maven實戰》第17章介紹了編寫maven插件的方法


免責聲明!

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



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