Maven
  1. Maven
  2. MNG-2205

"provided" scope dependencies must be transitive

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Critical Critical
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: 3.x / Backlog
    • Component/s: Dependencies
    • Labels:
      None

      Description

      A provided scope dependency can also be thought of as "compile-only".

      Project A requires Sybase JConnect on the runtime classpath. Project A declares a "provided" dependency on Sybase JConnect.
      Project B depends upon Project A. Project B declares a "compile" dependency on Project A.
      Project C depends upon Project B. Project C declares a "compile" dependency on Project B.

      C
      | - compile dependency
      B
      | - compile dependency
      A
      | - provided dependency
      Sybase JConnect
      

      So, does Project C transitively depend on Sybase JConnect. Yes, of course! The "provided" dependency needs to be transitive.

      Ultimately, when Project C gets deployed, Sybase JConnect needs to be somewhere on the runtime classpath in order for the application to function. It's valid for Project C to assume that Sybase JConnect is available and use JDBC all over the Project C code. Project C is safe to do this because it can happily deduce that Sybase JConnect will be there in the runtime environment because Project A NEEDS IT.

      I've got Use Cases all over my aggregated build which make it absolutely critical and common sense that provided scope dependencies are transitive. For the (very rare) odd case where you don't want to inherit provided dependencies, you can <exclude/> them.

      1. transitivetest.zip
        2 kB
        Michael Pollmeier

        Issue Links

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              David Boden
            • Votes:
              46 Vote for this issue
              Watchers:
              52 Start watching this issue

              Dates

              • Created:
                Updated:

                Development