From: Mark G. <ma...@ch...> - 2002-06-28 08:41:39
|
Scott Hernandez wrote: > FYI: The basedir attribute was removed from NAntTask before the 0.7.9.0 > release. It was removed may 3rd. We incorrectly assumed that the basedir attribute had not yet been implemented. So we added it and then independently discovered that is was not required! ;) It's gone from our local copy now and needs no further consideration. That said, I would still really like to see the NAntTask nested properties change make it into the next release. Since Ant supports them, I can't see how the change can do any harm. I realise that NAnt is only compatible with Ant in spirit, but since Ant is so widely deployed it seems sensible to follow it's lead whenever choices appear arbitrary. > > Here is the behavior I would expect for properties: > > 1.) Default = InheritAll (this is the way Ant does it, and I think > people expect to be able to use properties from the parent build file) > 2.) -D: properties should be read-only and inherited. (It was specified > on the command line for a reason. If you don't want it read-only, do it > another way.) > 3.) Any property specified in nant tag should override the current > value, unless it is read-only. 1 and 2 are consistent with Ant. I tried a simple test case with Ant to determine if 3 is consistent, and it differs in that Ant allows even "user" properties to be overridden by a nested property element. I think that both inherited properties and those specified in nested property elements should become read-only in the new project. The motivation is similar to your point 2) above. They have been passed for a reason, if you don't want it read-only etc....... All this behaviour is consistent with Ant. Here is the relevent part from the Ant task docs [1]. <from Ant docs> By default, all of the properties of the current project will be available in the new project. Alternatively, you can set the inheritAll attribute to false and only "user" properties (i.e., those passed on the command-line) will be passed to the new project. In either case, the set of properties passed to the new project will override the properties that are set in the new project (See also the property task). You can also set properties in the new project from the old project by using nested property tags. These properties are always passed regardless of the setting of inheritAll. This allows you to parameterize your subprojects. </from Ant docs> Unless anyone can think of concrete reasons why Ant's way of doing things is bad, I feel we should mimick Ant on this issue. I am willing to make all the relevant changes to NAnt if I can be assured the changes will be accepted. Mark [1] http://jakarta.apache.org/ant/manual/CoreTasks/ant.html |