Gradle中编译和运行时配置之间的区别


102

我的问题有点普遍,但它也与Gradle相关联。

为什么我们需要编译和运行时配置?

当我编译某些东西时,我需要工件来将我的Java类转换为字节码,因此我需要编译配置,但是为什么需要运行时配置,我还需要其他东西才能在JVM中运行我的应用程序吗?

抱歉,这听起来很愚蠢,但我不明白。

Answers:


149

在最常见的情况下,编译时所需的构件是运行时所需的构件的子集。例如,假设有一个名为appuse 的程序foo,library在foo 内部使用librarybar。然后只foo需要进行编译app,但同时需要两者foobar运行它。这就是为什么默认情况下,放置在Gradle compile配置上的所有内容在其runtime配置上也可见的原因,但事实并非如此。


20
可惜的gradle.org/docs/current/userguide/dependency_management.html中没有明确提及。他们同时使用编译和运行时,而未明确说明其含义...
silasdavis 2014年

2
@silasdavis在文档中解释了区别:8.3中的gradle.org/docs/current/userguide/…。依赖性配置
angelcervera 2014年

@angelcervera嗯,它是如此。8.依赖管理基础知识和51.依赖管理。我可以看到为什么有两个部分,但是如果后者引用前者可能会很好。我想我登陆了51,并希望它能提供完整的说明。
silasdavis,2014年

@silasdavis是的。文档其他部分的内容相同。我必须采取相同的自由时间阅读从A到Z的所有文件
angelcervera

1
@Peter Niederwieser如果编译任务显示与运行时相同的依赖性,那么在哪种情况下您将使用运行时而不是编译?
rj2700 '17
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.