[ 
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 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".

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

Reply via email to