我的问题有点普遍,但它也与Gradle相关联。
为什么需要编译和运行时配置?
当我编译某些东西时,我需要 Artifact 来将我的Java类转换为字节码,因此我需要编译配置,但是为什么需要运行时配置,我还需要其他东西才能在JVM中运行我的应用程序吗?
抱歉,这听起来很愚蠢,但我不明白。
最佳答案
在最常见的情况下,编译时所需的 Artifact 是运行时所需的 Artifact 的子集。例如,假设一个名为app
的程序使用了foo
库,而图书馆foo
在内部使用了bar
库。然后只需要foo
来编译app
,但是同时需要foo
和bar
来运行它。这就是为什么默认情况下,放在Gradle的compile
配置上的所有内容在其runtime
配置上也可见的原因,但事实并非如此。