title: In gradle dependencies, why API configurations discards all transitive dependencies?
body: <p>I have a gradle project that contains 2 subprojects: common &amp; demo.</p>
  
  <p>The common project depends on a published library:</p>
  
  <pre><code>dependencies {
  
      implementation("eu.timepit:singleton-ops_${vs.scalaBinaryV}:0.5.0")
  ...
  </code></pre>
  
  <p>The demo project depends on common as part of its API:</p>
  
  <pre><code>dependencies {
  
      api(project(":common")) {
          isTransitive =true
      }
  }
  </code></pre>
  
  <p>When I compile both, I observe the correct dependency in common:</p>
  
  <pre><code>compileClasspath - Compile classpath for source set 'main'.
  +--- org.scala-lang:scala-compiler:2.12.11
  |    +--- org.scala-lang:scala-library:2.12.11
  |    +--- org.scala-lang:scala-reflect:2.12.11
  |    |    \--- org.scala-lang:scala-library:2.12.11
  |    \--- org.scala-lang.modules:scala-xml_2.12:1.0.6
  +--- org.scala-lang:scala-library:2.12.11
  +--- org.scala-lang:scala-reflect:2.12.11 (*)
  \--- eu.timepit:singleton-ops_2.12:0.5.0
       +--- org.scala-lang:scala-compiler:2.12.8 -&gt; 2.12.11 (*)
       +--- org.scala-lang:scala-library:2.12.8 -&gt; 2.12.11
       \--- com.chuusai:shapeless_2.12:2.3.3
            +--- org.scala-lang:scala-library:2.12.4 -&gt; 2.12.11
            \--- org.typelevel:macro-compat_2.12:1.1.1
                 \--- org.scala-lang:scala-library:2.12.0 -&gt; 2.12.11
  </code></pre>
  
  <p>but in demo, the transitive dependecies under common are empty!</p>
  
  <pre><code>compileClasspath - Compile classpath for source set 'main'.
  +--- project :common
  +--- org.scala-lang:scala-compiler:2.12.11
  ...
  </code></pre>
  
  <p>This leads to the very common classpath missing errors, like:</p>
  
  <pre><code>[Error] /xxx/DoubleVectorDemo.scala:9: Symbol 'type shapeless.ProductArgs' is missing from the classpath.
  This symbol is required by 'object edu.umontreal.kotlingrad.shapesafe.tensor.DoubleVector'.
  Make sure that type ProductArgs is in your classpath and check for conflicting dependencies with `-Ylog-classpath`.
  A full rebuild may help if 'DoubleVector.class' was compiled against an incompatible version of shapeless.
  </code></pre>
  
  <p>So what's the point of dropping libraries for something that is part of your API? And how to override this behaviour in all projects?</p>