[
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)