代码之家  ›  专栏  ›  技术社区  ›  Eric

渐变-将“compile”更改为“implementation”get错误

  •  1
  • Eric  · 技术社区  · 6 年前

        dependencies {
            compile 'org.codehaus.groovy:groovy-all:2.4.15'
        }
    

    如果改变 compile implementation

    任务“”的执行失败:迎宾员:艾哈瓦

    更改它,然后构建将成功。

    提示:

    • Gradle 4.10 ,你支持哪一个 实施 .
    • 还有其他依赖项,在子项目中,更改为使用 不会引起问题,只有这一行会。

    1 回复  |  直到 6 年前
        1
  •  3
  •   ToYonos    6 年前

    我想知道为什么您的主要java项目需要 groovy-all implementation 配置应该足够了。

    :greeter:compileJava FAILED
    /mnt/star/git_repository/workspace/groovy_workplace/gradle/hello/hello_multi_project/greeter/src/main/java/greeter/Greeter.java:5: error: cannot access GroovyObject
            final String output = GreetingFormatter.greeting(args[0]);
                                                   ^
      class file for groovy.lang.GroovyObject not found
    

    为什么是 GroovyObject 需要编译java代码吗?我看了看 Groovy对象 源代码和它击中了我:

    package groovy.lang;
    
    /**
     * The interface implemented by all Groovy objects.
     * <p>
     * Especially handy for using Groovy objects when in the Java world.
     *
     * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
     */
    public interface GroovyObject {
    [...]
    

    在Java世界中使用Groovy对象 .

    GreetingFormatter 是Groovy对象并隐式实现 Groovy对象 . 这就是为什么 groovy全部 在编译类路径中需要,即应该声明为 compile groovy库中的依赖关系。