[ https://issues.apache.org/jira/browse/MENFORCER-385?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Konrad Windszus updated MENFORCER-385: -------------------------------------- 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: {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". was: 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 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". > Enforce that transitive provided dependencies are contained in the runtime > Maven classpath > ------------------------------------------------------------------------------------------ > > 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 > Priority: Major > > 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: > {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)