Rather than a CLI switch can we use the plugin prerequisites to control the behaviour?
If prerequisites is < 3.0 or >= 3.4 then apply the fix otherwise replicate the bug. That way if the plugin was built and tested against 2.x (which presumably doesn't have the bug) or against 3.4+ you get the. Ore than behaviour. Plugins that were developed and tested against 3.0-3.3 should get the behaviour they were tested against Wdyt On Mon 26 Dec 2016 at 16:07, Christian Schulte <c...@schulte.it> wrote: > Am 12/26/16 um 11:36 schrieb Robert Scholte: > > > This is becoming a bug versus feature discussion. > > > > It shouldn't. > > > > > Up until now you've made > > > changes which might change the resolution because you've marked them as a > > > bug which must be fixed. However, what is 'the truth': the documentation > > > or the code? The answer is: in the end it is the code. And if you want to > > > have them in sync, you sometimes need to adjust the documentation instead > > > of the code, because the code has a behavior one is used to. > > > > Have you read the Javadoc and the code? If you would have done that, you > > would notice that everything behaves consistently and as documented > > *but* one class which is fixed now. If it would be *all* classes, there > > would be no question the code is behaving the way it should. > > > > MRESOLVER-8 > > > > This *only* affects plugin and extension resolution by stopping to > > discard any test and provided *direct* dependencies of a plugin the same > > way optional *direct* dependencies are not discarded and the same way > > the dependency manager is not managing *direct* dependencies. It does > > not affect project resolution in any way. That's what we are really > > lucky about. If we don't want Maven to behave that way (with plugin and > > extension resolution fixed) it's the Maven codebase to adjust - not the > > resolver. That's just an API used by Maven and should just be consistent > > and correct. The original author really could have left a few unit tests > > in that area. We would not discuss anything, if he would have done that. > > He would have noticed things himself or would have left a comment at > > least. The issue above together with > > > > MRESOLVER-9 > > MRESOLVER-10 > > > > is really "just" bugfixes. What we learn from that is that we should > > "commit" any resolution result during deployment so that bugs like these > > can be fixed without influencing the resolution performed for a deployed > > project. That's the PDT file we are going to deploy in Maven X. > > > > > Since we're talking about changes in resolution, I also expose this > topic. > > > To me it is not a bug nor a feature, but it is a design flaw. And the > > > issue is often not exposed, because the dependencies used for testing are > > > not conflicting the compile dependencies. As long as the compilations > > > works and all the tests run, users often don't look in detail at the > > > dependency. > > > The fact right now is that if I add/change a test-scoped dependency, it > > > could happen that the project won't run due to a missing transitive > > > dependency. > > > We are very, very lucky this doesn't happen that often. > > > > This is what would stop if we would just fix those bugs. We are running > > into those bugs ourselves. Take a look at the PMD plugin POM again. What > > would you have done, if the test dependencies I moved to compile scope > > would be required for compilation of that project? This is already > > yelling for an enforcer rule or something like that. "Are all classes > > used by the classes on the compilation classpath available during > > compilation?" Currently it's a result of trial and error. Really. If we > > let this go on, we need to be even more lucky in a few years. If we say > > plugins and extensions just are not resolved the same way as projects > > (how it has been for a long time), this will make the following IT start > > to fail, when done consistently. > > > > < > https://git-wip-us.apache.org/repos/asf?p=maven-integration-testing.git;a=commit;h=4d9d7104d3491ec4a00e3ffc6713d983c84a19d0 > > > > > > So we would need to adjust the Maven codebase to keep it behaving as > > before. The resolver is not the correct codebase for this. I could do > > that easily although it's inconcistent with itself that way. If you take > > a look at what updates needed to be performed to various plugin POMs, > > those are really all bugs in the POMs. Either we fix them, or we make > > plugin resolution differ from project resolution (non-transitive > > *direct* dependencies only override main scope dependencies during > > building but are ignored when building the runtime classpath). Just say > > so and it'll be done. My personal opinion is that having a different > > runtime classpath than what was used during building is a bad idea and > > we are running into issues due to this ourselves which proves this correct. > > > > Regards, > > -- > > Christian > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org > > For additional commands, e-mail: dev-h...@maven.apache.org > > > > -- Sent from my phone