maven插件调试方法
2018-09-05 07:47:00来源:博客园 阅读 ()
前言
以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:
注意其中的jm目标可能是detect、delete、insert、update,根据实际情况选择,也就是“解决方案一”中的myPluginGoal。除此,要把groupId 、artifactId、版本号改成自己插件的对应值。
注:如果插件已经在目标项目的 pom 中定义,可以只写 jm:detect ,后面的 -DgroupId 等参数可以不写
再进入Runner, 不勾选“Use project settings”,配置VM Options:
其中的端口号可以改成其他的。
然后配置maven插件项目
增加Remote配置,并将其中的端口号改成和目标项目端口号相同的值即可。
现在可以开始调试啦
首先点击目标项目的运行按钮,启动Listening...,再到插件项目中打好断点、点击调试按钮,即可开始调试。
后记
调试的方法有多种,本文中的方法比较简单,如有特殊需求可查询其他方法。
参考资料
《Maven实战》第17章介绍了编写maven插件的方法
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Java基础-一文搞懂位运算
下一篇:spring-集成redis
- eclipse下创建Maven项目(包含webapp目录结构) 2020-06-09
- Maven安装与配置 2020-06-09
- 2020最新IDEA插件大集合,一款能帮助你写代码的工具是多么重 2020-06-09
- 【Java-jxl插件】【Excel文件读写报错】jxl.read.biff.BiffE 2020-06-07
- IDEA下Maven的pom文件导入依赖出现Auto build completed wit 2020-06-07
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash