Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why do I have to specify both 'runtime' and 'compile' for the same dependency?

I am depending on a few artifacts that I need to both compile and run my application.

According to the Gradle docs, the runtime configuration extends the compile configuration, so surely adding a dependency using runtime implies an implicit compile dependency?

At least that was my assumption, but it does not work. When just depending on the artifact using runtime, my project does not compile anymore. I literally have to:

compile 'oauth.signpost:signpost-core:1.2.1.2'
runtime 'oauth.signpost:signpost-core:1.2.1.2'

for the application to both compile and see the Signpost classes at runtime.

Am I missing something? That just doesn't look right...

like image 385
Matthias Avatar asked Jan 14 '11 16:01

Matthias


1 Answers

Almost right. Runtime configuration, indeed, extends compile configuration (docs). It means, that any dependency added to compile configuration is available in runtime configuration (docs).

compile 'oauth.signpost:signpost-core:1.2.1.2' will be enough to get this artifact in both, runtime and compile.

like image 125
Nikita Skvortsov Avatar answered Oct 22 '22 22:10

Nikita Skvortsov