Search code examples
gradlegradlewgradle-dependencies

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


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?


Solution

  • // Edit Aug 2023: The meaning actually is documented - Output Annotations

    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.