You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by John Casey <jd...@commonjava.org> on 2009/05/19 04:45:57 UTC
[PROPOSAL] POM Version-Expression Transformation
I've been grappling with version-expression interpolation since before
Maven 2.1.0 (See MNG-3057, MNG-4140, and now MNG-4167). It seems that
doing this transformation within an ArtifactTransformation
implementation is a flawed concept, since it means that plugins are
using old content when they produce derivative files/metadata from a POM
that contains version expressions.
I've written up my thoughts on what exactly the problem is here, what I
see as our options for solving it, and how I think we ought to proceed.
You can find them here:
http://docs.codehaus.org/display/MAVEN/Transforming+POM+Version+Expressions
Please, read it over and let me know what you think. If you have a
completely different direction you think the solution should go, I want
to hear from you! If you have something you think I haven't considered
in this write-up, say so. I took a shot at fixing the version-expression
problem in 2.1.0, and opened up a pretty big bug for projects that want
GPG signatures of their POMs. I'd rather not repeat that mistake.
Thanks!
-john
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org
Re: [PROPOSAL] POM Version-Expression Transformation
Posted by Brett Porter <br...@apache.org>.
Does this page need to be marked out of date since it was pulled from
2.2.0?
I was also thinking further about this - what extent would separating
the resolution metadata in the repository from the POM help?
I think this has been mentioned before - so if a 4.0.0 POM in the
current format, transformed as discussed, with minimal information
from the POM required for resolution is deployed to the current
location and the original POM (in whatever format) is pushed alongside
it as part of the release - would it overcome the main issue? I'd need
to refresh myself on the touchpoints.
- Brett
On 19/05/2009, at 12:45 PM, John Casey wrote:
> I've been grappling with version-expression interpolation since
> before Maven 2.1.0 (See MNG-3057, MNG-4140, and now MNG-4167). It
> seems that doing this transformation within an
> ArtifactTransformation implementation is a flawed concept, since it
> means that plugins are using old content when they produce
> derivative files/metadata from a POM that contains version
> expressions.
>
> I've written up my thoughts on what exactly the problem is here,
> what I see as our options for solving it, and how I think we ought
> to proceed. You can find them here:
>
> http://docs.codehaus.org/display/MAVEN/Transforming+POM+Version+Expressions
>
> Please, read it over and let me know what you think. If you have a
> completely different direction you think the solution should go, I
> want to hear from you! If you have something you think I haven't
> considered in this write-up, say so. I took a shot at fixing the
> version-expression problem in 2.1.0, and opened up a pretty big bug
> for projects that want GPG signatures of their POMs. I'd rather not
> repeat that mistake.
>
> Thanks!
>
> -john
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org
Re: [PROPOSAL] POM Version-Expression Transformation
Posted by nicolas de loof <ni...@gmail.com>.
I like the idea to have a new plugin normalize the POM before it gets
installed / deployed
This could be used also to translate the project POM from another XML schema
version / alternative language (groovy, json, or whatever) to 4.0.0
retro-compatible POM before beeing made public. This is not the subject of
your proposal, but with such a POM Transformation plugin attached to all
lifecycle we could open the POM format to enhancements (see for example the
current discution on apache-commons about commons-logging global exclusion,
or the proposal for an attribute-based 4.1.0 schema)
Cheers,
Nicolas
2009/5/19 Arnaud HERITIER <ah...@gmail.com>
> Thx a lot John for this good sum-up about this issue.Seing your thoughts
> about how to fix it, I understand that we have few solutions.
> You are talking about Maven 3.0. How will it handle this case ?
> Can't we reuse something from it ?
>
> Arnaud
>
> On Tue, May 19, 2009 at 4:45 AM, John Casey <jd...@commonjava.org>
> wrote:
>
> > I've been grappling with version-expression interpolation since before
> > Maven 2.1.0 (See MNG-3057, MNG-4140, and now MNG-4167). It seems that
> doing
> > this transformation within an ArtifactTransformation implementation is a
> > flawed concept, since it means that plugins are using old content when
> they
> > produce derivative files/metadata from a POM that contains version
> > expressions.
> >
> > I've written up my thoughts on what exactly the problem is here, what I
> see
> > as our options for solving it, and how I think we ought to proceed. You
> can
> > find them here:
> >
> >
> http://docs.codehaus.org/display/MAVEN/Transforming+POM+Version+Expressions
> >
> > Please, read it over and let me know what you think. If you have a
> > completely different direction you think the solution should go, I want
> to
> > hear from you! If you have something you think I haven't considered in
> this
> > write-up, say so. I took a shot at fixing the version-expression problem
> in
> > 2.1.0, and opened up a pretty big bug for projects that want GPG
> signatures
> > of their POMs. I'd rather not repeat that mistake.
> >
> > Thanks!
> >
> > -john
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> > For additional commands, e-mail: dev-help@maven.apache.org
> >
> >
>
>
> --
> Arnaud
>
Re: [PROPOSAL] POM Version-Expression Transformation
Posted by John Casey <jd...@commonjava.org>.
After talking at length to Brian and Jason about this, it became obvious
that injecting this logic into the build process at some arbitrary point
in the lifecycle would probably only increase confusion, since binding a
given plugin before that point would produce different results than
binding it after that point.
Therefore, I've moved the code out of the ArtifactTransformation that
used to house it, and made it a separate component called
[Default]CoordinateInterpolator, which is called as the last step in
building a project instance from a POM in a project directory (not when
building from the local repository, though). This means that all plugins
referencing ${project.file} will get the same information, which should
be a lot less confusing. The interpolation step is pretty fast, so I
don't think it will be a major penalty for IDEs and such.
I've included an integration test to supplement the unit tests that were
adapted from the ArtifactTransformation code, and closed MNG-4167 and
MGPG-14 as a result.
-john
Arnaud HERITIER wrote:
> Thx a lot John for this good sum-up about this issue.Seing your thoughts
> about how to fix it, I understand that we have few solutions.
> You are talking about Maven 3.0. How will it handle this case ?
> Can't we reuse something from it ?
>
> Arnaud
>
> On Tue, May 19, 2009 at 4:45 AM, John Casey <jd...@commonjava.org> wrote:
>
>> I've been grappling with version-expression interpolation since before
>> Maven 2.1.0 (See MNG-3057, MNG-4140, and now MNG-4167). It seems that doing
>> this transformation within an ArtifactTransformation implementation is a
>> flawed concept, since it means that plugins are using old content when they
>> produce derivative files/metadata from a POM that contains version
>> expressions.
>>
>> I've written up my thoughts on what exactly the problem is here, what I see
>> as our options for solving it, and how I think we ought to proceed. You can
>> find them here:
>>
>> http://docs.codehaus.org/display/MAVEN/Transforming+POM+Version+Expressions
>>
>> Please, read it over and let me know what you think. If you have a
>> completely different direction you think the solution should go, I want to
>> hear from you! If you have something you think I haven't considered in this
>> write-up, say so. I took a shot at fixing the version-expression problem in
>> 2.1.0, and opened up a pretty big bug for projects that want GPG signatures
>> of their POMs. I'd rather not repeat that mistake.
>>
>> Thanks!
>>
>> -john
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
>> For additional commands, e-mail: dev-help@maven.apache.org
>>
>>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org
Re: [PROPOSAL] POM Version-Expression Transformation
Posted by Arnaud HERITIER <ah...@gmail.com>.
Thx a lot John for this good sum-up about this issue.Seing your thoughts
about how to fix it, I understand that we have few solutions.
You are talking about Maven 3.0. How will it handle this case ?
Can't we reuse something from it ?
Arnaud
On Tue, May 19, 2009 at 4:45 AM, John Casey <jd...@commonjava.org> wrote:
> I've been grappling with version-expression interpolation since before
> Maven 2.1.0 (See MNG-3057, MNG-4140, and now MNG-4167). It seems that doing
> this transformation within an ArtifactTransformation implementation is a
> flawed concept, since it means that plugins are using old content when they
> produce derivative files/metadata from a POM that contains version
> expressions.
>
> I've written up my thoughts on what exactly the problem is here, what I see
> as our options for solving it, and how I think we ought to proceed. You can
> find them here:
>
> http://docs.codehaus.org/display/MAVEN/Transforming+POM+Version+Expressions
>
> Please, read it over and let me know what you think. If you have a
> completely different direction you think the solution should go, I want to
> hear from you! If you have something you think I haven't considered in this
> write-up, say so. I took a shot at fixing the version-expression problem in
> 2.1.0, and opened up a pretty big bug for projects that want GPG signatures
> of their POMs. I'd rather not repeat that mistake.
>
> Thanks!
>
> -john
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
> For additional commands, e-mail: dev-help@maven.apache.org
>
>
--
Arnaud