maven插件调试方法
前言
以IntelliJ IDEA为例,通常我们调试maven项目时,都是直接点击调试按钮即可。但maven编写的插件就不同了,由于插件需要打包成Jar加载到项目中,所以如果我们需要在编写插件源码时调试的话,就不能直接点击调试按钮了(因为没有Main类,只有detect目标),那么该怎么办呢?
解决方案
假设及正在编写的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实战》第17章介绍了编写maven插件的方法