You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Konrad Windszus (Jira)" <ji...@apache.org> on 2021/05/21 15:05:00 UTC

[jira] [Created] (MENFORCER-385) Enforce that transitive provided dependencies of direct dependencies are directly declared

Konrad Windszus created MENFORCER-385:
-----------------------------------------

             Summary: Enforce that transitive provided dependencies of direct dependencies are directly declared
                 Key: MENFORCER-385
                 URL: https://issues.apache.org/jira/browse/MENFORCER-385
             Project: Maven Enforcer Plugin
          Issue Type: Improvement
          Components: Standard Rules
            Reporter: Konrad Windszus


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. At run time they fail as the transitive dependency has not been declared explicitly.

As manually specifying all transitive (but hidden) {{provided}} dependencies is a very error-prone process a 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:
{code:java}
My Maven Plugin "A" -> 3rd Party Library "B" -> Provided Dependency "C"{code}
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 message was sent by Atlassian Jira
(v8.3.4#803005)