That should have separation between builder Pom and consumer Pom. For packaging=pom we deploy the builder Pom using classifier=build *for all other packaging a we do not deploy the builder Pom*.
I don't like the sound of this. The deployed artefacts should include the exact POM in use to build the project, as a reference, even if under a different name. Yes, they should be in SCM, however down stream it's useful to see these even when the SCM is offline or gone or private or whatever. Or did I misunderstand? If so, please clarify? On Wed, Aug 24, 2016 at 1:52 PM, Stephen Connolly < stephen.alan.conno...@gmail.com> wrote: > On Tuesday 23 August 2016, Paul Benedict <pbened...@apache.org> wrote: > > > On Tue, Aug 23, 2016 at 5:27 PM, Christian Schulte <c...@schulte.it > > <javascript:;>> wrote: > > > > > Am 08/24/16 um 00:08 schrieb Paul Benedict: > > > > POM and a future major version POM? I am hinting at a strategy for > > > forward > > > > compatibility. > > > > > > Is forward compatibility really needed/required? > > > > > > > I honestly don't know, which is why I am asking. An answer of "no > > compatibility" is possible, too. > > > > I can completely see the argument that says POMs must be > > all-parseable-or-nothing -- for the sake of reproducibility. I actually > > prefer this answer. I think it is sensible to fail a build when > > encountering a POM version too advanced. If your client only supports up > to > > model 4.0.0, then all artifacts must be specified by 4.0.0 models, too. > > > > On the other hand, I wanted to give the benefit of the doubt to the > > opposite argument. At least one person spoke up and said it's > unacceptable > > to fail a build on configuration you don't understand. Well, that's an > > interesting argument, too. That person doesn't want to tank the build for > > the 1% of configuration that can't be understood.... but I fail to see an > > escape hatch here. If a client can't understand what's being specified, > > then what else can be done but fail? > > > Strip the dependencies a and let the user fix up manually (ideally by > logging a warning that you are consuming a dependency using a newer > modelVersion) > > Everyone forgets that the 4.0.0 ship has sailed already, so we have to > deploy best-effort 4.0.0 poms > > Now I say that 3.4 should not have a new modelVersion but what it could do > is be more forgiving of newer modelVersions or try and download and use an > XSLT to convert newer modelVersions to 4.0.0 (while logging a warning) with > option flags to allow failing the build if XSLT had to be applied > > So let's bump the modelVersion in Maven 5.0.0 (there is no Maven 4.x let's > align on the modelVersion) > > That should have separation between builder Pom and consumer Pom. For > packaging=pom we deploy the builder Pom using classifier=build for all > other packaging a we do not deploy the builder Pom. > > We deploy a *best effort* conversion of the consumer Pom to modelVersion > 4.0.0 without a classifier and the consumer Pom gets deployed as classifier > consumer. > > The consumer Pom format allows for XSLT to transform to a parsable syntax, > if transform is required we log a warning (or fail the build if the builder > Pom indicates strict modelVersion adherence) > > So yeah maven 5.x will be able to parse dependencies with modelVersion 6.x > while logging warnings that the user may not have the correct dependency > tree. That is IMHO acceptable forward compatibility > > HTH > > -Stephen > > Ps I'm really hoping someone has a less crappy solution that this... But I > believe this is actually *a* solution... And prior to this I have not seen > any solution > > > > Cheers, > > Paul > > > > > -- > Sent from my phone >