gradle dependency what does (c) and (n) mean?

Viewed 1286

extremely close to this SO post, and asked in comments, but left unclear there.

$ git clone https://github.com/k9mail/k-9.git
$ cd k-9/mail/protocols/smtp
$ ../../../gradlew dependencies | grep "4.7.1 (\*)\|4.7.1 (c)\|4.7.1 (n)" | sort -u
+--- com.jakewharton.timber:timber:4.7.1 (*)
+--- com.jakewharton.timber:timber:4.7.1 (n)
+--- com.jakewharton.timber:timber:{strictly 4.7.1} -> 4.7.1 (c)

What do (c) and (n) suffixes mean?

1 Answers

Sadly, the Gradle docs do not cover this topic so it is a bit confusing.

Issuing gradlew dependencies | tail shows a legend explaining the meaning of the printed suffixes.

(c) - dependency constraint
(*) - dependencies omitted (listed previously)
(n) - Not resolved (configuration is not meant to be resolved)
  • Constraints are not pulled in unless some other dependency pulls them in.
  • Transitive dependencies are listed only once and then omitted.
  • Declared just for holding/listing the dependency not resolving it to a graph. This is the case for configurations like implementation or api.
Related