+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
>
>

Reply via email to