yes, we'll need to find clear terms for each concept: I now understand what 
you meant by consumer pom, which is not what I meant :)


there are 2 ideas:

- publishing classical Maven pom without build information (pom generated by 
flatten plugin or alike), to be able to add new build features in Maven pom 
model version 5 without wreaking havoc in Central for the whole consumer eco-
system (Maven2 & 3 and other build tools)

- creating a new descriptor format for repositories to be able to consume 
artifacts more efficiently


The good news is that IMHO, these ideas are complementary: we just need to 
solve the name conflict regarding "comsumer pom".

Regards,

Hervé

Le jeudi 25 août 2016 21:14:09 Robert Scholte a écrit :
> The current pom will still be there, always, consumer pom is an extra file
> for more effective artifact resolution. So yes, that's why I suggested
> consumer dom to ensure it is not confused with the current pom.
> 
> Robert
> 
> On Thu, 25 Aug 2016 20:16:08 +0200, Chas Honton <c...@honton.org> wrote:
> > I use the current Pom to automate checking license policy and checking
> > owasp database for known security flaws. The scm and website metadata is
> > also very useful. Automated download of source for debugging is
> > essential. As a consumer, I don't want to lose these abilities.
> > 
> > Chas
> > 
> >> On Aug 25, 2016, at 10:11 AM, Paul Benedict <pbened...@apache.org>
> >> wrote:
> >> 
> >> Is it really correct to call a dependency-only (more of less) file a
> >> POM if
> >> it ceases to contain project information? A project is (or should be!)
> >> synonymous with a build. Is that why someone referred to it as a DOM? A
> >> DOM
> >> makes way more sense to me than overloading the usage of POM and
> >> calling it
> >> a "consumer POM"
> >> 
> >> Cheers,
> >> Paul
> >> 
> >> On Thu, Aug 25, 2016 at 11:53 AM, Robert Scholte <rfscho...@apache.org>
> >> 
> >> wrote:
> >>> For both the flattened-pom and consumer-pom the idea is to remove build
> >>> related information. Most of it is only used during build.
> >>> The question is: is there other information which should be added?
> >>> e.g. In case of JARs: the major version number of the class file format
> >>> being used. Is it interesting to know this BEFORE downloading the jar?
> >>> And
> >>> if so, there should be a possibility to make choices based on that
> >>> information. The choice-option doesn't exist and would make it all too
> >>> complex.
> >>> I would say that it is indeed all about dependencies.
> >>> 
> >>> thanks,
> >>> Robert
> >>> 
> >>> 
> >>> On Thu, 25 Aug 2016 18:25:36 +0200, Paul Benedict
> >>> <pbened...@apache.org>
> >>> wrote:
> >>> 
> >>> The only (minor?) issue I have with the term "consumer POM" is that it
> >>> 
> >>>> implies one type of consumption. What is the kind of consumption we're
> >>>> addressing -- is it merely the GAV and dependencies?
> >>>> 
> >>>> Cheers,
> >>>> Paul
> >>>> 
> >>>> On Thu, Aug 25, 2016 at 3:34 AM, Robert Scholte <rfscho...@apache.org>
> >>>> wrote:
> >>>> 
> >>>> On Thu, 25 Aug 2016 01:10:36 +0200, Stephen Connolly <
> >>>> 
> >>>>> stephen.alan.conno...@gmail.com> wrote:
> >>>>>> On 24 August 2016 at 04:50, Robert Scholte <rfscho...@apache.org>
> >>>>>> wrote:
> >>>>>> 
> >>>>>> 
> >>>>>> I realized last ApacheCon that I wasn't clear about my definiton of
> >>>>>> the
> >>>>>> 
> >>>>>>> consumer-pom.
> >>>>>>> I don't think it should be a flattened pom with only the dependency
> >>>>>>> information. Instead it shouldn't be a pom  (matching the pom.xsd)
> >>>>>>> at
> >>>>>>> all.
> >>>>>>> 
> >>>>>>> 
> >>>>>>> I am not in disagreement, but as a concept the name "consumer pom"
> >>>>>>> has
> >>>>>> 
> >>>>>> more
> >>>>>> traction.
> >>>>> 
> >>>>> I'd prefer consumer pom too, but it has led to confusion due to the
> >>>>> assumption that consumer pom and flattened pom are the same thing.
> >>>>> To me
> >>>>> it
> >>>>> makes sense to consider a new fileformat for the consumer pom which
> >>>>> matches
> >>>>> better the requirements. And yes, the "provides" would fit here.
> >>>>> 
> >>>>> 
> >>>>> 
> >>>>> I see the builder pom as probably ending up not even being XML at
> >>>>> all.
> >>>>> 
> >>>>>> Rather IMHO it will end up being a DSL that is easy to author and
> >>>>>> not
> >>>>>> verbose... and certainly not XML
> >>>>>> 
> >>>>>> So the consumer pom should be stripped back to include two sets of
> >>>>>> information:
> >>>>>> 
> >>>>>> * dependencies - we are mostly familiar with this... though we may
> >>>>>> not
> >>>>>> expose all the scopes... depends on how we think about things and
> >>>>>> how we
> >>>>>> view scopes moving forward
> >>>>>> 
> >>>>>> * provides - this is vitally important IMHO and not handled
> >>>>>> currently.
> >>>>>> 
> >>>>>> To understand provides we have to look at things like JavaEE (but
> >>>>>> the
> >>>>>> concept has general utility... though I suspect only for about
> >>>>>> 10-25% of
> >>>>>> projects)
> >>>>>> 
> >>>>>> If I have a project that says: provides
> >>>>>> javax.servlet:servlet-api:3.1
> >>>>>> then
> >>>>>> that is saying that my project is providing the equivalent content
> >>>>>> as in
> >>>>>> javax.servlet:servlet-api:3.1 so for example
> >>>>>> org.jboss.spec.javax.servlet:
> >>>>>> jboss-servlet-api_3.1_spec:1.0.0.Final would say
> >>>>>> javax.servlet:servlet-api:3.1
> >>>>>> 
> >>>>>> When resolving the dependency tree, maven then knows that any
> >>>>>> transitive
> >>>>>> requirement for javax.servlet:servlet-api:3.1 has already been met
> >>>>>> by my
> >>>>>> direct dependency on org.jboss.spec.javax.servlet:j
> >>>>>> boss-servlet-api_3.1_spec
> >>>>>> 
> >>>>>> :1.0.0.Final if we have a direct dependency on
> >>>>>> 
> >>>>>> org.apache.tomcat:tomcat-servlet-api:8.5.4 (which would also say
> >>>>>> javax.servlet:servlet-api:3.1) then Maven can report an error and
> >>>>>> fail
> >>>>>> the
> >>>>>> build due to dependency conflict.
> >>>>>> 
> >>>>>> There are lots of other improvements we can add, but to start we
> >>>>>> need to
> >>>>>> have a way to declare when a project includes duplicate content of
> >>>>>> another
> >>>>>> artifact. Convention will be required to make this work correctly...
> >>>>>> perhaps we can even introduce a new project type that provides
> >>>>>> needs to
> >>>>>> point at so that a provides has to point at an "empty" specification
> >>>>>> project...
> >>>>>> 
> >>>>>> Finally, for the consumer pom refactoring I believe we need to
> >>>>>> address
> >>>>>> architecture specific artifacts as these are a sort of implicit
> >>>>>> provides.
> >>>>>> 
> >>>>>> 
> >>>>>> Maybe it should be called something like consumer-dom (dependency
> >>>>>> object
> >>>>>> 
> >>>>>>> model, though dom is confusing...).
> >>>>>>> It should be the most fast and efficient way to resolve the
> >>>>>>> dependency
> >>>>>>> tree. That means it should do less roundtrips like Maven must do do
> >>>>>>> right
> >>>>>>> now: for every dependency download the pom, for all transitive
> >>>>>>> dependencies
> >>>>>>> download all poms, etc.
> >>>>>>> Why can't it be a pom? I'd like to add the (file)extension too.
> >>>>>>> Otherwise
> >>>>>>> Maven needs to initialize the matching ArtifactHandler and
> >>>>>>> translate
> >>>>>>> the
> >>>>>>> type to the proper extension.
> >>>>>> 
> >>>>>> I think the consumer pom needs to embed some of the artifact handler
> >>>>>> information for it self as otherwise non-maven tooling cannot be
> >>>>>> expected
> >>>>>> to understand those details... also we should be making the
> >>>>>> consumer pom
> >>>>>> both Maven and Java agnostic... but this is a grand problem alright!
> >>>>>> 
> >>>>>> 
> >>>>>> The pom doesn't have room for this.
> >>>>>> 
> >>>>>>> I saw the whole flattened pom experiment as mostly a waste of time
> >>>>>>> for
> >>>>>> 
> >>>>>> the
> >>>>>> consumer pom effort as I envision the consumer pom not looking
> >>>>>> anything
> >>>>>> like the current pom at all... but it is a project model...
> >>>>>> 
> >>>>>> Oh and the consumer pom should include information for the
> >>>>>> side-artifacts
> >>>>>> (which would help with reusing tests as we could attach the test
> >>>>>> dependencies to the test artifact details in the consumer pom)
> >>>>>> 
> >>>>>> Consumer-dom is an extraction and enriched version of the pom and
> >>>>>> will
> >>>>>> be
> >>>>>> a
> >>>>>> 
> >>>>>> separate upload to the repository. Build tools who can understand
> >>>>>> this
> >>>>>> 
> >>>>>>> file
> >>>>>>> can use it or fall back by downloading all poms.
> >>>>>>> 
> >>>>>>> thanks,
> >>>>>>> Robert
> >>>>>>> 
> >>>>>>> 
> >>>>>>> On Wed, 24 Aug 2016 09:22:03 +0200, Stephen Connolly <
> >>>>>>> stephen.alan.conno...@gmail.com> wrote:
> >>>>>>> 
> >>>>>>> The consumer Pom is for machine to machine, it should be human
> >>>>>>> readable
> >>>>>>> 
> >>>>>>> because that is nice, but intent is never human generated.
> >>>>>>> 
> >>>>>>>> Switching to this separation allows us to be more radical in the
> >>>>>>>> changes
> >>>>>>>> to
> >>>>>>>> the build Pom.
> >>>>>>>> 
> >>>>>>>> The only reason we deploy packaging Pom's build Pom is for
> >>>>>>>> inheritance.
> >>>>>>>> If
> >>>>>>>> we didn't have to deal with that we wouldn't need to deploy any
> >>>>>>>> build
> >>>>>>>> poms
> >>>>>>>> ever.
> >>>>>>>> 
> >>>>>>>> For using a build Pom as a parent, you implicitly pick up the
> >>>>>>>> minimum
> >>>>>>>> version of maven that your parent requires, so we then are free to
> >>>>>>>> evolve
> >>>>>>>> the build Pom format without worrying about forward compatibility,
> >>>>>>>> only
> >>>>>>>> backwards compatibility on the *build* Pom.
> >>>>>>>> 
> >>>>>>>> The consumer Pom needs partial *forward* compatibility, so that
> >>>>>>>> older
> >>>>>>>> clients are able to *attempt* to consume...
> >>>>>>>> 
> >>>>>>>> In short there are totally different compatibility constraints on
> >>>>>>>> the
> >>>>>>>> two,
> >>>>>>>> so they should be separate.
> >>>>>>>> 
> >>>>>>>> Mixins would probably also be deployed, once we figure out how
> >>>>>>>> they
> >>>>>>>> work
> >>>>>>>> with build poms.
> >>>>>>>> 
> >>>>>>>> I think we probably need to rethink version ranges. What I'd like
> >>>>>>>> is
> >>>>>>>> to
> >>>>>>>> let
> >>>>>>>> the consumer Pom treat version ranges more as guidance rather than
> >>>>>>>> hard
> >>>>>>>> requirements. It's a pain if you depend transitiveky on Foo:[1.0]
> >>>>>>>> but
> >>>>>>>> need
> >>>>>>>> Foo:[1.0.1,1.1) for the critical security fix... Having to run
> >>>>>>>> around
> >>>>>>>> applying excludes is not a good plan... Yes the build should
> >>>>>>>> initially
> >>>>>>>> fail
> >>>>>>>> if I depend on [1.0] and [1.0.1,1.1) in my graph, but I should be
> >>>>>>>> able
> >>>>>>>> to
> >>>>>>>> resolve the conflict for all my consumers (unless they pull in the
> >>>>>>>> conflict
> >>>>>>>> again themselves)
> >>>>>>>> 
> >>>>>>>> On Tuesday 23 August 2016, Fred Cooke <fred.co...@gmail.com>
> >>>>>>>> wrote:
> >>>>>>>> 
> >>>>>>>> I still find it a bit off that the original real POM won't always
> >>>>>>>> be
> >>>>>>>> 
> >>>>>>>> directly available anymore.
> >>>>>>>> 
> >>>>>>>>> Other tools create fake POMs because they *have* to - there's no
> >>>>>>>>> other
> >>>>>>>>> option.
> >>>>>>>>> 
> >>>>>>>>> I feel like some fidelity would be lost. Diffability would be
> >>>>>>>>> lost
> >>>>>>>>> (from
> >>>>>>>>> a
> >>>>>>>>> scenario where there's nothing to diff).
> >>>>>>>>> 
> >>>>>>>>> Unrelated, really, but kind of related: top level deployable
> >>>>>>>>> artefact
> >>>>>>>>> deployments, debs, wars, exes, etc. When ranges are in use it'd
> >>>>>>>>> be
> >>>>>>>>> nice
> >>>>>>>>> to
> >>>>>>>>> deploy a sort of strict effective pom with fully hard []
> >>>>>>>>> versions for
> >>>>>>>>> all
> >>>>>>>>> things. This can be achieved in other ways, though.
> >>>>>>>>> 
> >>>>>>>>> I guess that is to say, don't forget about non-central
> >>>>>>>>> deployments. I
> >>>>>>>>> suppose if there's a way to always deploy pom.xml.build through
> >>>>>>>>> some
> >>>>>>>>> plugin
> >>>>>>>>> or configuration or some such, then that's fine with me.
> >>>>>>>>> 
> >>>>>>>>> On Wed, Aug 24, 2016 at 6:49 PM, Hervé BOUTEMY <
> >>>>>>>>> herve.bout...@free.fr
> >>>>>>>>> <javascript:;>>
> >>>>>>>>> 
> >>>>>>>>> wrote:
> >>>>>>>>>> Le mercredi 24 août 2016 18:41:59 Fred Cooke a écrit :
> >>>>>>>>>>> Fair call re embedded pom, however it's quite convenient to
> >>>>>>>>>>> just
> >>>>>>>>> 
> >>>>>>>>> browse
> >>>>>>>>> 
> >>>>>>>>>> to
> >>>>>>>>>> 
> >>>>>>>>>>> it and read.
> >>>>>>>>>>> 
> >>>>>>>>>>> I've occasionally gone looking for details from poms of
> >>>>>>>>>>> artefacts
> >>>>>>>>> 
> >>>>>>>>> and
> >>>>>>>>> 
> >>>>>>>>>> found
> >>>>>>>>>> 
> >>>>>>>>>>> a mess and missing stuff, and been annoyed. It probably wasn't
> >>>>>>>>> 
> >>>>>>>>> gradle's
> >>>>>>>>> 
> >>>>>>>>>>> fault, though. Just a sloppy author. If I'm honest I wouldn't
> >>>>>>>>> 
> >>>>>>>>> even
> >>>>>>>>> know
> >>>>>>>>> 
> >>>>>>>>>> if
> >>>>>>>>>> 
> >>>>>>>>>>> I've ever consumed a non-maven artefact, certainly none of
> >>>>>>>>>>> mine!
> >>>>>>>>> :
> >>>>>>>>> :-)
> >>>>>>>>> :
> >>>>>>>>>>> No, I am sure, I have, at least one, and it's an ant one with a
> >>>>>>>>> 
> >>>>>>>>> hard
> >>>>>>>>> 
> >>>>>>>>>> coded
> >>>>>>>>>> 
> >>>>>>>>>>> POM that doesn't always reflect the contents of the jar. Yuck.
> >>>>>>>>> 
> >>>>>>>>> Clearly
> >>>>>>>>> 
> >>>>>>>>>> not
> >>>>>>>>>> 
> >>>>>>>>>>> an issue with automated stuff, though.
> >>>>>>>>>>> 
> >>>>>>>>>>> My only argument now is ease of reading things like project
> >>>>>>>>> 
> >>>>>>>>> descriptions,
> >>>>>>>>> 
> >>>>>>>>>>> contributors, SCM details, etc rather than having to unpack the
> >>>>>>>>> 
> >>>>>>>>> jar.
> >>>>>>>>> And
> >>>>>>>>> 
> >>>>>>>>>> if
> >>>>>>>>>> 
> >>>>>>>>>>> you do, and end up with two pom.xmls laying around, that's not
> >>>>>>>>> 
> >>>>>>>>> nice.
> >>>>>>>>> 
> >>>>>>>>>> Better
> >>>>>>>>>> 
> >>>>>>>>>>> to just start always suffixing one with pom.xml.build or some
> >>>>>>>>> 
> >>>>>>>>> such? I
> >>>>>>>>> 
> >>>>>>>>>> think
> >>>>>>>>>> 
> >>>>>>>>>>> so, but I haven't thought deeply about it aside from reading
> >>>>>>>>>>> this
> >>>>>>>>> 
> >>>>>>>>> thread.
> >>>>>>>>> 
> >>>>>>>>>> our consumer pom will be generated from build pom: we can
> >>>>>>>>>> automate
> >>>>>>>>> 
> >>>>>>>>> copy
> >>>>>>>>> of
> >>>>>>>>> 
> >>>>>>>>>> any
> >>>>>>>>>> information we want, and for sure, I expect to put at least
> >>>>>>>>> 
> >>>>>>>>> description,
> >>>>>>>>> 
> >>>>>>>>>> scm
> >>>>>>>>>> details, issueManagement, license (of course).
> >>>>>>>>>> In your list, there is only constributors that I was not
> >>>>>>>>>> counting
> >>>>>>>>> 
> >>>>>>>>> on
> >>>>>>>>> 
> >>>>>>>>> it:
> >>>>>>>>>> but
> >>>>>>>>>> it's a detailed decision we'll have to make
> >>>>>>>>>> 
> >>>>>>>>>> for sure, Maven consumer poms, since generated from Maven build
> >>>>>>>>> 
> >>>>>>>>> pom,
> >>>>>>>>> can
> >>>>>>>>> 
> >>>>>>>>>> have
> >>>>>>>>>> much more details (and be sure they are accurrate) than build
> >>>>>>>>>> tools
> >>>>>>>>> 
> >>>>>>>>> that
> >>>>>>>>> 
> >>>>>>>>>> don't
> >>>>>>>>>> generate it from data that exists in their original build format
> >>>>>>>>>> 
> >>>>>>>>>> Regards,
> >>>>>>>>>> 
> >>>>>>>>>> Hervé
> >>>>>>>>>> 
> >>>>>>>>>>> On Wed, Aug 24, 2016 at 6:32 PM, Hervé BOUTEMY <
> >>>>>>>>> 
> >>>>>>>>> herve.bout...@free.fr
> >>>>>>>>> <javascript:;>>
> >>>>>>>>> 
> >>>>>>>>>>> wrote:
> >>>>>>>>>>>> Le mercredi 24 août 2016 14:04:12 Fred Cooke a écrit :
> >>>>>>>>>>>>> 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?
> >>>>>>>>>>>> 
> >>>>>>>>>>>> when you consume an artifact not build with Maven, do you get
> >>>>>>>>> 
> >>>>>>>>> the
> >>>>>>>>> full
> >>>>>>>>> 
> >>>>>>>>>>>> build
> >>>>>>>>>>>> script?
> >>>>>>>>>>>> no
> >>>>>>>>>>>> I know that, as Maven users, we got used to have the build pom
> >>>>>>>>>> 
> >>>>>>>>>> published
> >>>>>>>>>> 
> >>>>>>>>>>>> in
> >>>>>>>>>>>> central: this is now an issue, but we like that
> >>>>>>>>>>>> 
> >>>>>>>>>>>> notice: the build pom can be injected in the artifact, in
> >>>>>>>>>> 
> >>>>>>>>>> META-INF/maven,
> >>>>>>>>>> 
> >>>>>>>>>>>> like
> >>>>>>>>>>>> it is currently done
> >>>>>>>>>>>> but I don't see the point in requiring it to be pbulished
> >>>>>>>>> 
> >>>>>>>>> separately
> >>>>>>>>> in
> >>>>>>>>> 
> >>>>>>>>>>>> central: no other build tool does that, and they don't have
> >>>>>>>>>>>> any
> >>>>>>>>> 
> >>>>>>>>> issue
> >>>>>>>>> 
> >>>>>>>>>> with
> >>>>>>>>>> 
> >>>>>>>>>>>> that (and eventually it's a feature: don't publish internal
> >>>>>>>>> 
> >>>>>>>>> details
> >>>>>>>>> you
> >>>>>>>>> 
> >>>>>>>>>>>> don't
> >>>>>>>>>>>> really want people to see)
> >>>>>>>>>>>> 
> >>>>>>>>>>>> Regards,
> >>>>>>>>>>>> 
> >>>>>>>>>>>> Hervé
> >>>>>>>>>>>> 
> >>>>>>>>>>>>> On Wed, Aug 24, 2016 at 1:52 PM, Stephen Connolly <
> >>>>>>>>>>>>> 
> >>>>>>>>>>>>> stephen.alan.conno...@gmail.com <javascript:;>> wrote:
> >>>>>>>>>>>>>> On Tuesday 23 August 2016, Paul Benedict <
> >>>>>>>>> 
> >>>>>>>>> pbened...@apache.org
> >>>>>>>>> <javascript:;>>
> >>>>>>>>> 
> >>>>>>>>>> wrote:
> >>>>>>>>>>>>>>> On Tue, Aug 23, 2016 at 5:27 PM, Christian Schulte <
> >>>>>>>>>> 
> >>>>>>>>>> c...@schulte.it <javascript:;>
> >>>>>>>>>> 
> >>>>>>>>>>>>>>> <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
> >>>>>>>>>>>> 
> >>>>>>>>>>>> ------------------------------------------------------------
> >>>>>>>>> 
> >>>>>>>>> ---------
> >>>>>>>>> 
> >>>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> >>>>>>>>> 
> >>>>>>>>> <javascript:;>
> >>>>>>>>> 
> >>>>>>>>>>>> For additional commands, e-mail: dev-h...@maven.apache.org
> >>>>>>>>> 
> >>>>>>>>> <javascript:;>
> >>>>>>>>> 
> >>>>>>>>>> ------------------------------------------------------------
> >>>>>>>>> 
> >>>>>>>>> ---------
> >>>>>>>>> 
> >>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> >>>>>>>>> 
> >>>>>>>>> <javascript:;>
> >>>>>>>>> 
> >>>>>>>>>> For additional commands, e-mail: dev-h...@maven.apache.org
> >>>>>>>>> 
> >>>>>>>>> <javascript:;>
> >>>>>>>>> 
> >>>>>>>>> 
> >>>>>>>>> 
> >>>>>>>>> 
> >>>>>>>>> 
> >>>>>>>>> ------------------------------------------------------------
> >>>>>>>> 
> >>>>>>>> ---------
> >>>>>>> 
> >>>>>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> >>>>>>> For additional commands, e-mail: dev-h...@maven.apache.org
> >>>>>>> 
> >>>>>>> 
> >>>>>>> --------------------------------------------------------------------
> >>>>>>> -
> >>>>> 
> >>>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> >>>>> For additional commands, e-mail: dev-h...@maven.apache.org
> >>> 
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> >>> For additional commands, e-mail: dev-h...@maven.apache.org
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> > For additional commands, e-mail: dev-h...@maven.apache.org
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
> For additional commands, e-mail: dev-h...@maven.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org

Reply via email to