无法解析 class - gradle

Unable to resolve class - gradle

我的目录结构如下:

src
   --foo
        --A.groovy
   --test
         --groovy
                 buildTest.groovy

这是 A.groovy class :

package foo

class A {
   void execute() {
       println "Inside A"
   }
}

这是我的buildTest.groovy

class buildTest {
     @Test
     void should_execute(){
        A a = new A()
        def result = a.execute()
     }
}

当我 运行 ./gradlew 测试时,它抛出错误:

Unable to resolve class A 
A a = new A()
  ^

这是我的 build.gradle :

plugins {
    id "groovy"
}

repositories {
    mavenCentral()
    maven { url 'https://repo.jenkins-ci.org/releases/' }
}

dependencies {
    compile 'org.eclipse.hudson:hudson-core:3.2.1'
    implementation 'org.codehaus.groovy:groovy-all:3.0.7'
    testImplementation 'junit:junit:4.12'
    testImplementation "com.lesfurets:jenkins-pipeline-unit:1.3"
}

sourceSets {
    main {
        groovy {
            srcDirs = ['src/foo']
        }
    }
}

谁能帮我解决这个错误。

您在包 foo 中声明了一个 class A。 (请注意,布局不会反映这一点,因为文件应该在 src/foo/foo/A.groovy 中,尽管 Groovy 并不关心)。

但是,测试 class 不在包中,因此看不到 foo.A。要么导入它,要么将测试 class 也移动到包 foo 中。或者,从 class A 中删除包声明,但我认为这不是好的做法。

我也同意关于不更改布局的评论,除非您有充分的理由(例如,您正在处理遗留项目)。这可能是导致混淆 class 实际在哪个包中的原因。