Uploaded image for project: 'Sling'
  1. Sling
  2. SLING-11369

Provide Maven Enforcer rule which checks that provided dependencies are contained in the runtime Maven classpath

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • Tooling
    • None

    Description

      All dependencies with provided scope are not transitively inherited. While this isn't a problem usually during compile time it is a problem for Maven plugins at run time, as they use the Maven dependency classpath also at run time (https://maven.apache.org/guides/mini/guide-maven-classloading.html#3-plugin-classloaders). At run time they fail if the (transitive) provided dependency has not been declared explicitly.

      As manually specifying all transitive (but hidden) provided dependencies is a very error-prone process an enforcer rule for that would be highly beneficial. Especially as the transitive dependencies have to be rechecked once you upgrade to a newer version.

      Example:

      My Maven Plugin "A" -> 3rd Party Library "B" -> Provided Dependency "C"
      As "B" uses "C" at run time it needs to be declared as dependency of "A" as well otherwise you might see java.lang.ClassNotFoundException when executing Maven plugin "A".

      This was originally proposed in MENFORCER-385 but declined as considered too much of an edge case.
      Compare with the discussion at https://lists.apache.org/thread/ttncrwmsnk29qy6n3on6ymfbq9s7dbnm

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            kwin Konrad Windszus
            kwin Konrad Windszus
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment