You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins上用Maven测试Groovy共享库时无法解析类

解决Maven测试Jenkins共享库时测试类无法解析主类的问题

刚接触Maven和Jenkins共享库时遇到这类依赖问题很正常,我帮你梳理下问题根源和修复步骤:

问题诊断

你遇到的Unable to resolve class br.common.v1.SomeClass1错误,本质是测试类编译时找不到主类的class文件,主要由以下几个配置问题导致:

  1. GMavenPlus插件的测试源配置混淆了主类目录和测试类目录
  2. Maven的源路径设置与实际目录结构不匹配
  3. 测试类的包声明和文件目录不对应

具体修复步骤

1. 修正GMavenPlus插件的测试源配置

你的插件配置里,testSources错误包含了主类所在的src/br/common/v1目录,这会导致主类被当作测试源处理,干扰正常的类路径依赖。修改为只保留测试类目录:

<testSources>
  <testSource>
    <directory>${project.basedir}/src/test/groovy</directory>
    <includes>
      <include>**/*.groovy</include>
    </includes>
  </testSource>
</testSources>

2. 调整Maven源路径与GMavenPlus主源配置

因为你的主类结构无法修改,需要让Maven正确识别主源根目录,同时指定GMavenPlus只编译目标路径下的Groovy类:

<!-- 调整Maven全局源路径 -->
<sourceDirectory>src</sourceDirectory>
<testSourceDirectory>src/test/groovy</testSourceDirectory>

<!-- 修正GMavenPlus的主源配置 -->
<sources>
  <source>
    <directory>${project.basedir}/src</directory>
    <includes>
      <include>br/common/v1/**/*.groovy</include>
    </includes>
  </source>
</sources>

这样配置后,Maven会把src作为主源根目录,GMavenPlus只编译br/common/v1下的Groovy类,保证主类能被正确编译并加入类路径。

3. 修正测试类的包结构与文件位置

你的测试文件在src/test/groovy下,却声明了package test.groovy;,这不符合Maven的"目录对应包名"规则,导致导入路径失效。有两种修复方式:

  • 方式一:移除包声明
    直接删掉测试类里的package test.groovy;,因为测试文件直接放在src/test/groovy根目录下,不需要包声明。
  • 方式二:匹配目录与包名
    把测试文件移动到src/test/groovy/br/common/v1/目录下,同时修改测试类的包声明为package br.common.v1;,这样导入br.common.v1.SomeClass1更符合规范。

修改后的测试类示例(方式二):

package br.common.v1;
import br.common.v1.SomeClass1;

class SomeClass1Tests extends GroovyTestCase {
  void testReturnTrue() {
    def someClass1Object = new SomeClass1();
    def expected = true;
    def result = someClass1Object.returnTrue();
    assertEquals(expected, result);
  }
}

4. 验证编译与测试

先执行编译命令确认主类和测试类都能正常编译:

mvn clean compile test-compile

如果没有报错,再执行测试命令:

mvn test

额外优化建议

  • 你的Jenkins版本(2.85)比较老旧,建议升级到最新LTS版本,减少兼容性问题;
  • 移除pom中不必要的依赖,比如maven-plugin和maven-install-plugin,这些是Maven自带组件,无需手动添加;
  • 保持groovy-all版本与Jenkins内置Groovy版本一致(Jenkins 2.85对应Groovy 2.4.12,你的配置是正确的)。

内容的提问来源于stack exchange,提问作者Alexander Krämer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 09:12:35