We get it right this time w.r.t. extensions so that we don't have to
do this again! ;-)

2011/5/24 Arnaud Héritier <aherit...@gmail.com>:
> ok, but we'll deploy a new pom with a different classifier for each new
> version ?
> Whe we'll have 3 possible versions, how will we do ?
> If I 'm building a new project with a maven compatible with POM 4.2.0 can I
> extend a pom 4.0.0 or 4.1.0 ?
> Said differently imagine we have a really new cool feature in POM 4.2.0 and
> we want to use it in Apache parent for all projects already using our new
> Maven X.Y
> What we'll we do for projects using POM 4.0.0 or POM 4.1.0 (knowing that
> perhaps the project will be in 4.0.0 but the dev we'll have the latest Maven
> version)
>
>
> On Tue, May 24, 2011 at 5:30 PM, nicolas de loof
> <nicolas.del...@gmail.com>wrote:
>
>> +1, simple and efficient
>>
>> 2011/5/24 Stephen Connolly <stephen.alan.conno...@gmail.com>
>>
>> > deploy new poms as poms with classifier
>> >
>> > new maven tries to download pom with classifier... fails and falls
>> > back to pom without
>> >
>> > old maven only ever sees pom without classifier
>> >
>> > 2011/5/24 Arnaud Héritier <aherit...@gmail.com>:
>> > > It doesn't seem so easy for me.
>> > > If we deploy 4.0.0 only we'll never be able to reuse new POMs in the
>> > build
>> > > process by inheritance for example.
>> > > Thus always deploying .pom artifacts as 4.0.0 keeps the compatibility
>> but
>> > > won't allow us to evolve.
>> > > The problem is how to depend and how to extend (without talking about a
>> > > future : how to mix..)
>> > >
>> > >
>> > > On Tue, May 24, 2011 at 4:09 PM, John Casey <jdca...@commonjava.org>
>> > wrote:
>> > >
>> > >>
>> > >>
>> > >> On 5/24/11 8:25 AM, Brian Fox wrote:
>> > >>
>> > >>> 2011/5/24 Arnaud Héritier<aherit...@gmail.com>:
>> > >>>
>> > >>>> Before talking about a specific change in the model like the
>> addition
>> > of
>> > >>>> mixins (which may be cool but not critical) did we :
>> > >>>> - studied that we had everything necessary to manage new versions of
>> > POMs
>> > >>>> with something a little bit dynamic inside the core and all that is
>> > >>>> necessary on repositories side ?
>> > >>>> - studied if we couldn't start by really simple issues that may
>> > already
>> > >>>> do a
>> > >>>> very useful 3.1 version like the addition of global exclusions ?
>> > >>>>
>> > >>>>
>> > >>> I didn't read the proposal in detail yet, but my initial concern was
>> > >>> on pom compat as well.
>> > >>>
>> > >>
>> > >> I think doing some sort of on-the-fly translation into a 4.0.0 POM
>> > purely
>> > >> to be deployed for backwards compat would be enough here...though we
>> may
>> > >> want to explore how we could make Maven smart enough to say, "I can't
>> > read
>> > >> this POM, use a later version" or somesuch...
>> > >>
>> > >>
>> > >>
>> > >>>
>> > >>>  Arnaud
>> > >>>>
>> > >>>> On Tue, May 24, 2011 at 7:30 AM, Brett Porter<br...@apache.org>
>> >  wrote:
>> > >>>>
>> > >>>>  Hi,
>> > >>>>>
>> > >>>>> I'm working with some projects at the moment that have a high
>> amount
>> > of
>> > >>>>> repetition in the build section (and in some cases dependencies),
>> but
>> > no
>> > >>>>> common parent due to different organisational hierarchies.
>> Currently
>> > >>>>> it's
>> > >>>>> being solved by using archetypes to create projects consistently,
>> but
>> > it
>> > >>>>> isn't very satisfying if someone wants to change the archetype
>> later
>> > on.
>> > >>>>> I've minimised that by limiting what needs to change between
>> projects
>> > >>>>> based
>> > >>>>> on the archetype, but it is exactly the situation that calls for
>> > mixins.
>> > >>>>>
>> > >>>>> At the same time, this issue was filed today:
>> > >>>>> http://jira.codehaus.org/browse/MNG-5102, and I was surprised not
>> to
>> > >>>>> find
>> > >>>>> a dupe given how often it has come up here.
>> > >>>>>
>> > >>>>> Previous discussions I found:
>> > >>>>> http://s.apache.org/maven-mixin-1
>> > >>>>> http://s.apache.org/maven-mixin-2
>> > >>>>> http://s.apache.org/maven-mixin-3
>> > >>>>> http://s.apache.org/maven-mixin-4
>> > >>>>>
>> > >>>>> I don't see any concrete proposals, other than the notes from Jason
>> > >>>>> Dillon.
>> > >>>>> So, I thought I'd start collecting them here.
>> > >>>>>
>> > >>>>> I actually prefer the name "template", so I'll use that here, but
>> > happy
>> > >>>>> to
>> > >>>>> take other's opinions on that.
>> > >>>>>
>> > >>>>> --
>> > >>>>>
>> > >>>>> Pre-requisites: the ability to make modifications to the POM,
>> > published
>> > >>>>> to
>> > >>>>> the repository, without impacting older clients. This needs an
>> issue
>> > of
>> > >>>>> it's
>> > >>>>> own, but I don't think it's challenging if we continue to spit out
>> > >>>>> v4.0.0 to
>> > >>>>> the repository.
>> > >>>>>
>> > >>>>> Some notes on how I think it should work:
>> > >>>>> - templates should look like a normal POM (perhaps only differing
>> in
>> > >>>>> root
>> > >>>>> element, and less strict validation requirements), so that normal
>> > >>>>> validation
>> > >>>>> can be applied
>> > >>>>> - any POM element is valid, other
>> > than<parent>,<groupId>,<artifactId>,
>> > >>>>> <version>,<templates>,<modules>
>> > >>>>> - templates need to be sourced from the repository using the normal
>> > >>>>> mechanism (similarly to the parent POM)
>> > >>>>> - templates should have an extension "xml" in the repository. It is
>> > >>>>> attached to the corresponding POM project with packaging
>> > "pom-template".
>> > >>>>> Multiple templates can be attached using classifiers. The POM of
>> the
>> > >>>>> template must be separate to the template itself, as some elements
>> > would
>> > >>>>> otherwise overlap (e.g.<name>  of the template vs the templated
>> name,
>> > or
>> > >>>>> distributionManagement)
>> > >>>>> - we rely on the later interpolation step to resolve variables -
>> > there
>> > >>>>> should be no filtering or macro capability on the template
>> > >>>>> - there should be no additional merge semantics - I think they can
>> be
>> > >>>>> handled very similarly to external profiles in terms of building
>> > >>>>> - there should be no conditionals within or around the template
>> > (that's
>> > >>>>> the
>> > >>>>> purpose of profiles)
>> > >>>>>
>> > >>>>> I think that makes the sequence of project building:
>> > >>>>> - parents&  templates are resolved
>> > >>>>> - templates are injected, sequentially as declared in the POM. Note
>> > that
>> > >>>>> this happens before inheritance, so templates in parents are
>> already
>> > >>>>> applied.
>> > >>>>> - profiles are selected and injected
>> > >>>>> - project inheritance is applied
>> > >>>>> - interpolation is applied
>> > >>>>>
>> > >>>>> Templates would be referenced as follows:
>> > >>>>>
>> > >>>>> <project>
>> > >>>>>  <parent>
>> > >>>>>    ...
>> > >>>>>  </parent>
>> > >>>>>  <templates>
>> > >>>>>    <template>
>> > >>>>>      <groupId>org.apache.maven.templates</groupId>
>> > >>>>>      <artifactId>maven-release-profile-template</artifactId>
>> > >>>>>      <version>1.0</version>
>> > >>>>>      <classifier>sources-and-javadocs</classifier>  (optional
>> > element)
>> > >>>>>    </template>
>> > >>>>>    <template>
>> > >>>>>      <groupId>org.apache.maven.templates</groupId>
>> > >>>>>      <artifactId>maven-team-list</artifactId>
>> > >>>>>      <version>1.0</version>
>> > >>>>>    </template>
>> > >>>>>  </templates>
>> > >>>>>  ...
>> > >>>>> </project>
>> > >>>>>
>> > >>>>> Some alternatives for discussion:
>> > >>>>> - we could allow profiles to be externalised, and use that instead
>> of
>> > a
>> > >>>>> new
>> > >>>>> element. Simplifies building, but I think is less descriptive of
>> > intent
>> > >>>>> - template as a bare POM - instead of attached
>> > artifacts,<templateSpecs>
>> > >>>>> could be inlined in the POM, deployed as a single POM and then
>> > imported
>> > >>>>> into
>> > >>>>> another project. This seems unnecessarily complicated, though.
>> > >>>>> - there are other alternatives on how it is packaged in the
>> > repository -
>> > >>>>> e.g. a ".pomtmpl" extension or similar. If it is XML, I prefer that
>> > >>>>> extension so it is more readily recognised, and I believe the
>> > >>>>> group/artifact
>> > >>>>> IDs will already describe their intent
>> > >>>>>
>> > >>>>> Any thoughts?
>> > >>>>>
>> > >>>>> Cheers,
>> > >>>>> Brett
>> > >>>>>
>> > >>>>> --
>> > >>>>> Brett Porter
>> > >>>>> br...@apache.org
>> > >>>>> http://brettporter.wordpress.com/
>> > >>>>> http://au.linkedin.com/in/brettporter
>> > >>>>>
>> > >>>>>
>> > >>>>>
>> > >>>>>
>> > >>>>>
>> > >>>>>
>> ---------------------------------------------------------------------
>> > >>>>> 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
>> > >>>
>> > >>>
>> > >> --
>> > >> John Casey
>> > >> Developer, PMC Member - Apache Maven (http://maven.apache.org)
>> > >> Blog: http://www.johnofalltrades.name/
>> > >>
>> > >>
>> > >> ---------------------------------------------------------------------
>> > >> 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