| puzzled with installing my own PropertyHelper | puzzled with installing my own PropertyHelper 2005-05-24 - By "Wolfgang H?felinger"
Hi Antees,
I wonder whether someone got his own PropertyHelper installed and what needs exactly to be done?
What I'm doing is basically this: 1. I'm deriving my PropertyHandler from `org.apache.tools.ant.PropertyHelper' 2. I wrote a `Init' task to install my propery handler. The execute method looks like:
public void execute() throws BuildException { PropertyHelper PH = new PropertyHelper(); /* that's my own here */ Project P = getProject(); PH.setProject(P); P.addReference("ant.PropertyHelper",PH); }
I can see that my methods are called, especially the method "replaceProperties( )" of my helper. However, having done this I'm not longer able to resolve $ {basedir} and neither Java system properties
My build.xml looks basically like:
<project name="ant-test" default="test" basedir="."> <taskdef name="my-init" classname="my.Init" /> <!-- install my property handler --> <property name="X" value="Y" /> <my-init /> <target name="test"> <echo> basedir=${basedir} </echo> <echo> X=${X}</echo> </target> </project>
This would echo then print basedir=${basedir}' X=Y instead which is a bit unexpected to me.
Note that I can reproduce this with a very basic PropertyHelper:
public class PropertyHelper extends org.apache.tools.ant.PropertyHelper { protected PropertyHelper() { super(); } }
Any help available??
Side issue: Installing your own PropertyHelper is not enough in general. It appears that task `Property' is not consistently using the PropertyHelper interface. In order to have my fancy property handling installed I also had to subclass class Property and make a couple of adjustments.
Finally - what is it all about? I'm investigating build scripts written in our organisation. Lot's of times I found things like
classname = "x.y.z" filename = "x/y/z.class
in build.properties. I want to avoid that users need to write things more than once if not really required. So what I want to have is this:
filename = ${subst \\., /, ${classname}}.class # evaluates to: x/y/z.class
Everythings works fine so far except that my expression evaluator fails to resolve ${basedir} :-(((
Thanks for any help, Wolfgang. ______________________________________________________________ Verschicken Sie romantische, coole und witzige Bilder per SMS! Jetzt bei WEB.DE FreeMail: http://f.web.de/?mc=021193
--------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscribe@(protected) For additional commands, e-mail: user-help@(protected)
|
|
 |