gmaven插件执行groovy脚本时无法解析同包util类问题
问题排查与解决步骤
- 检查Groovy脚本的包声明
哪怕test.groovy和FarmerUtility类在同一个物理目录下,也必须在groovy脚本第一行声明和util类完全一致的package路径,比如util类包为com.example.farmer,则groovy开头必须加package com.example.farmer,Groovy不会自动根据文件路径补全包名。同时确认脚本中引用的类名大小写和Java类完全一致,Groovy对类名大小写敏感。 - 为gmaven插件添加项目编译路径依赖
gmaven 1.5版本默认执行时的classpath不会自动包含项目编译后的类和依赖,需要在configuration节点中新增classpath配置,修改后的完整插件配置如下:
<plugin> <groupId>org.codehaus.gmaven</groupId> <artifactId>gmaven-plugin</artifactId> <version>1.5</version> <dependencies> <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant</artifactId> <version>1.9.13</version> </dependency> </dependencies> <executions> <execution> <id>call-groovy</id> <phase>package</phase> <goals> <goal>execute</goal> </goals> <configuration> <providerSelection>1.8</providerSelection> <source>src/main/java/test.groovy</source> <!-- 新增classpath配置引入项目自身编译后的类 --> <classpath> <element> <groupId>${project.groupId}</groupId> <artifactId>${project.artifactId}</artifactId> <version>${project.version}</version> </element> </classpath> </configuration> </execution> </executions> </plugin>
- 调整执行阶段顺序(可选)
如果配置完成后仍然报类找不到错误,可以将gmaven的执行阶段从package调整为process-classes,该阶段在Java编译完成之后、打包动作之前执行,能保证所有Java类都已经完成编译。
内容的提问来源于stack exchange,提问作者Maha
相关产品推荐
相关产品推荐

