DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://issues.apache.org/bugzilla/show_bug.cgi?id=30651>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=30651 Add ability to pass arbitrary arguments after a special -- marker as special $ properties Summary: Add ability to pass arbitrary arguments after a special -- marker as special $ properties Product: Ant Version: 1.6.2 Platform: All OS/Version: Other Status: NEW Severity: Enhancement Priority: Other Component: Core AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] Even though Ant is not designed to be a scripting environment, it is a shame that developpers have to write some (usually crappy) .bat or .sh scripts to startup little interactive demo/example/benchmark programs, when all the CLASSPATH/PATH/LD_LIBRARY_PATH is already cleanly encapsulated in the build file. Furthermore, these scripts duplicate all the path info of the build file itself (which in my case is computed by custom tasks based on dependency info, Maven style). In a different life, I used to startup the X server on Solaris using the xserver program (I think that's the name), which recognized a special -- argument, after which all other args were not for xserver itself, but for the process it forked (the separate X11 server program). I thus added a similar behavior to the new Ant 1.6.x Launcher class. It now recognizes a new -- argument, and converts all arguments after it into Ant properties passed in to the traditional Ant main. The properties defined take the shell/perl like $0, $1, $2, etc... notation, with the special $# property for the total number of arguments after -- (including $0), and the special $* property that contains all the arguments (excluding $0) as a string (with simple logic to quote arguments that contain spaces or tabs). Given the following command lines, the properties are defined as below using the following target (that uses custom tasks, but that's beside the point): <target name="start" xmlns:bm="antlib:com.lgc.buildmagic"> <bm:echo unless="$0" message="Warning: No -- arguments specified" /> <bm:echo><propertyset><propertyref prefix="$" /></propertyset></bm:echo> </target> C:\oss\org_apache\ant16>build start Warning: No -- arguments specified C:\oss\org_apache\ant16>build start -- The -- argument must be followed by one or more argument(s) C:\oss\org_apache\ant16>build start -- toto $0 = toto $# = 1 $* = C:\oss\org_apache\ant16>build start -- toto titi tutu $1 = titi $0 = toto $# = 3 $* = titi tutu $2 = tutu C:\oss\org_apache\ant16>build start -- toto "titi tyty" tutu $1 = titi tyty $0 = toto $# = 3 $* = "titi tyty" tutu $2 = tutu Using this new -- argument passing technique with <java> and <exec>, Ant is now much more flexible to start up arbitrary Java programs (by using $0 in <java>'s classname attribute) and either <arg line="${$*}" /> or multiple <arg value="${$1}" /> style arguments. Thanks for considering this addition to Ant. --DD --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]