Hi, I think it is risky because some dependencies are really provided so you should write an extension which does it for specific artifacts but then question will be: what about parent provided deps?
Therefore my proposal would be to ask upstream projects to fix their pom or add a pom in their own build to provide you that feature. Le mer. 2 sept. 2020 à 07:47, <[email protected]> a écrit : > Hello, > > > > I have Maven project using spring-boot that is composed of base project and > components. This is mainly runtime dependency: Base (B) provides some > services, and components (C1, C2, C3.) are "installed" by dropping them > into > specific directory. This works fine, but as I expected I have some problems > with dependency management in specific cases. These specific cases are as > follows: there are two components, lets say C1 and C2, which pack activemq > and hawtio. Components are built using very simple mechanism - I have > separate projects that include component's artifacts (basically my compiled > code), and specify <dependencies>. Most of dependencies are provided > indirectly by specifying Base (B) or other Components (C1, C2.) with scope > <proided>. They are built using maven shade plugin (so > "jar-with-dependencies" aka "fat jar"). The only problem I have is with > aforementioned "activemq" and "hawtio". They are built not from compiled > code but by including artifacts by dependency. That means that AFAIU maven > reads their poms and includes specified dependencies - but their scope is > set to "compile" (probably some are transitive and are included from other > artifacts, but it doesn't matter), so shade plugin includes quite a lot of > dependencies into created fat jar - it results in multiple instances of > same > artifacts. I can work around it by specifying in e.g. hawtio's pom.xml > these > dependencies by hand with scope "provided", but I don't think this is > manageable in the long run - I have 20 dependencies right now and I suppose > any new version will only require more. And now, when the situation is > (hopefully) clear, here goes my question: > > > > I'd like to create a plugin, that would somehow intercept dependency > resolution and change scope to provided if given artifact is provided by > (so > <scope>provided</scope>) any other provided artifacts. So if Base (B) > provides e.g. artifact A1 and hawtio requires A1 (explicitly in pom, so > with > "compile" scope), plugin would check that A1 is already provided, so it > would change A1's scope to "provided> - this can be also done as a separate > step, it is just that I don't know how to get my hands on full dependency > graph. > > > > Or maybe there is already such plugin and I just couldn't find it? Or maybe > this approach was tried and failed and I should do everything some other > way > (which means asking on other group)? > > > > Thanks in advance, > > Jędrzej Dudkiewicz > > > > > >
