ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Donald <pe...@apache.org>
Subject Backwards compatability?
Date Sat, 20 Jul 2002 05:59:54 GMT
Hi,

I have started upgrading a lot of my projects to ant1.5 and it seems that 
there has been a fair whack of backwards incompatible changes. I just wanted 
to get peoples opinion on what level of backward compatability is acceptable 
and what is not. 

For instance, the changes in property inheritance between projects when you do 
sucessive project calls has broken a HUGE number of my build files. Almost 
universally I have a set of controller build files that in turn call worker 
build files that may in turn call other build files.

If you check out jakarta-avalon-excalibur and try to build with ant1.5 you 
will notice that no project with dependencies actually builds because of this 
bug. (This was not picked up by gump as recursive dependency evaluation is 
turned off for gump runs).

And I have a similar set of projects that are also utterly fubared. 

I can't remember exactly what the change was off hand but I believe it was a 
good thing (tm) and I think I may have even suggested it. However that does 
not get over the fact that it did brake oodles of things.

To be honest I am getting very sick of updating the same ant files over and 
over. Each release I have had to go through and make a large number of 
changes to builds to get things going again. I don't consider myself stupid 
or unknowledgable wrt Ant and thus I don't think it is a user error that is 
causing these constant incompatabilities.

What I want to know is how we plan to fix it in the future. With our current 
"system" I am not sure there is a clean or elegant method via which we can do 
this. The only thing that I can think of is versioning the names of the 
tasks.

For instance we upgrade <antcall/> in an incompatible way then its task name 
would become <antcall2/> etc. To avoid the pain of maintaining separate tasks 
we could do something similar to the following in each task that changed...

public void execute()
  throws BuildException
{
  if( getTaskName().equals( "antcall" ) )
  {
    doAntCallOriginal(); 
  }
  else if( getTaskName().equals( "antcall2" ) )
  {
    doAntCallV2(); 
  }
  else
  {
  ...
  }
}

Ugly as hell code but it is the easiest way to support this feature without 
massive amounts of work.

Anyhow I really really really want to top having to upgrade my build files 
(and complete build process in some circumstances) due to issues like this.

Thoughts? 

-- 
Cheers,

Peter Donald
--------------------------------------------
 Beer is proof that God loves us and wants 
 us to be happy. -- Benjamin Franklin
-------------------------------------------- 


--
To unsubscribe, e-mail:   <mailto:ant-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:ant-dev-help@jakarta.apache.org>


Mime
View raw message