Jörg and Benjamin, thanks for your explanation. I understand now that profiles are not allowed to be activated by properties defined inside a POM because it could form cycles (though maybe with some design decisions it could be avoided, but I have no idea of Maven code to give any suggestions about that).
And, Jörg, about the name of the tag in the activation, I believe it´s property instead of systemProperty because there are both options to activate it: one using a system/environment property/variable and other using a maven property (although in the latter case its necessary to be a property defined in the command line) Regards, Rafael Vanderlei On Fri, Mar 25, 2011 at 3:37 AM, Jörg Schaible <joerg.schai...@scalaris.com>wrote: > Hi Rafael, > > Rafael Vanderlei wrote: > > > Jörg, I understood when you first said that the way Maven is currently > > implemented it does not work this way. > > > > I'm just wondering if there is a suitable reason for that. So what I > still > > dont understand is "if a property declared in a parent pom can be used on > > the child pom for other purposes, WHY cant it be used to activate a > > profile defined in that child pom?" > > > > Maybe it's just a matter that maven developers did not think about and > > maybe could be simply implemented to work this way. > > On top of Benjamin's answer you have to understand *when* Maven is > resolving > the profiles and *when* the properties. The properties are determined from > the "effective" pom for the current project i.e. the project model that is > the result of merging all inherited POMs and active profiles into the final > one that is used to build the project. This "effective" pom *is* what > defines your project build - including the properties, because they are > part > of your final project definition. > > The profiles are used to modify this project model for alternate builds, > they create a different "effective" pom i.e. the result is more or less a > different project. Since the properties are part of the model, they cannot > be used to modify it again - this is the chicken and egg problem. In the > light of this it is unfortunate that the tag in the activation is named > "property" instead of "systemProperty", because most people make the wrong > association. > > Forget your assumption of evaluating the parent pom first - the model has > to > be complete to evaluate anything. As a consequence of this behavior you can > use a property in the parent, but define (or overwrite) it in the child. > > - Jörg > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@maven.apache.org > For additional commands, e-mail: users-h...@maven.apache.org > >