Java 格拉德尔:如果我把依赖项从;实施";至;“运行时”;而项目仍在编译中,会有问题吗?

Java 格拉德尔:如果我把依赖项从;实施";至;“运行时”;而项目仍在编译中,会有问题吗?,java,gradle,build.gradle,Java,Gradle,Build.gradle,我有一个使用多个依赖项的项目。我怀疑只有在运行时才需要一个依赖项,但我不是100%确定 在gradle中,我将依赖项从implementation更改为runtimeOnly。这个项目编译得很好 这种变化会有负面影响吗 如果将依赖项从实现更改为仅运行时,则表示项目在编译期间不需要此依赖项。一切都应该很好,因为运行时类路径没有改变 我能想到的唯一问题是: 更改的依赖项是javac注释处理器,如Lombok,它应该使用compileOnly和annotationProcessor,而不是实现 您有一

我有一个使用多个依赖项的项目。我怀疑只有在运行时才需要一个依赖项,但我不是100%确定

在gradle中,我将依赖项从
implementation
更改为
runtimeOnly
。这个项目编译得很好


这种变化会有负面影响吗

如果将依赖项从
实现
更改为
仅运行时
,则表示项目在编译期间不需要此依赖项。一切都应该很好,因为运行时类路径没有改变

我能想到的唯一问题是:

  • 更改的依赖项是
    javac
    注释处理器,如Lombok,它应该使用
    compileOnly
    annotationProcessor
    ,而不是
    实现

  • 您有一个用于组装和打包工件的自定义逻辑,它取决于
    实现
    关键字


  • @SuryakantBharti您链接的问题虽然有用,但指的是不推荐使用的
    运行时
    ,而不是
    仅运行时
    。Java可以在运行时编译类。如果发生这种编译,并且编译具有依赖性,那么将
    实现
    更改为
    仅运行时
    是否会导致问题?哪种编译?JVM可以将字节码编译成机器码,但通常不会将源代码编译成字节码。您是否将编译器(如ECJ)与应用程序一起提供,并编译源代码?即使如此,
    runtimeOnly
    仍然会在运行时提供依赖关系,因此编译应该可以工作;