On Thursday, 23 June 2022 16:31:55 CEST Stefan Seifert wrote: > i'm for 2. as well - i'm following this best practices for years in all my > projects. for consistency reasons i would also treat the testing > dependencies the same (we have edge cases where testing dependencies are > used as compile dependencies as well, e.g. for sling mocks).
+1 for all dependencies (I'm setting the scope also in all "my" projects) O. > however, doing this switch now is dangerous, as you will get different > dependency scopes probably without any warning or build failure if you > carelessly update to latest parent POMs. > stefan > > > > >-----Original Message----- > >From: Konrad Windszus <[email protected]> > >Sent: Thursday, June 23, 2022 4:17 PM > >To: [email protected] > >Subject: Sling Parent: Set scope in dependencyManagement? > > > >Hi, > >Currently sling-(bundle)-parent always also managed the scope (in most > >cases “provided”) for (almost all) its managed dependencies: > > > >https://github.com/apache/sling-> > >>parent/blob/e42fd6e5fac8ed9becf722b5241d01d3147338c4/sling- > >parent/pom.xml#L939-L1001 <https://github.com/apache/sling-> > >>parent/blob/master/sling-parent/pom.xml#L939-L1001> > >https://github.com/apache/sling-> > >>parent/blob/e42fd6e5fac8ed9becf722b5241d01d3147338c4/sling-bundle- > >parent/pom.xml#L208-L315 <https://github.com/apache/sling-> > >>parent/blob/e42fd6e5fac8ed9becf722b5241d01d3147338c4/sling-bundle- > >parent/pom.xml#L208-L315> > > > >IMHO managing the scope in the depMgmt is an anti-pattern [1], as it makes > >it very hard to override the scope. Each consumer should decide on its own > >which scope a dependency should have. > >One concrete example being https://github.com/apache/sling-org-apache-> > >>sling-testing-osgi-mock/blob/master/core/pom.xml > ><https://github.com/apache/sling-org-apache-sling-testing-osgi-> > >>mock/blob/master/core/pom.xml> which depends on a lot of OSGi dependencies > >which usually have scope “test” for consuming bundles, but the transitive > >dependency scope is actually overwritten to “provided" due to the use of > >our sling-parent. Removing the scope though is potentially backwards- > >incompatible though. > > > >So what should we do in the future? > > > >1. Stay with declaring the scope in the depMgmt (and also add “provided” > >to the few one, where scope is not yet managed) > >2. Remove scope from all dependencies except for pure testing dependencies > >(junit, ….) > > > >I would tend to implement option 2. > >WDYT? > > > >Thanks, > >Konrad > > > >[1] - https://stackoverflow.com/a/20750041
