You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ant.apache.org by Kendall Shaw <qu...@pacbell.net> on 2004/07/13 22:32:25 UTC
ruleset task idea
Thinking about the make-like build prerequisites question I posted
earlier, I thought maybe I could try to make a ruleset task someday...
Does this sound like a good idea, or is someone else already working on
something similar? Does it already exist? Are there problems with the idea?
The XML might be:
<!ELEMENT ruleset (rule+)>
<!ATTLIST ruleset
id ID #IMPLIED
name CDATA #IMPLIED
default CDATA #IMPLIED>
<!ELEMENT rule (prerequisites?, targetfiles?, (%ant.tasks;)*>
<!ATTLIST rule
id ID #IMPLIED
name CDATA #IMPLIED
prerequisites CDATA #IMPLIED
filetargets CDATA #IMPLIED>
<!ELEMENET prerequisites (%ant.path.elements;+)>
<!ATTLIST prerequisites
refid IDREFS #IMPLIED
files CDATA #IMPLIED>
<!ELEMENET filetargets (%ant.path.elements;+)>
<!ATTLIST filetargets
refid IDREFS #IMPLIED
files CDATA #IMPLIED>
For example (please forgive any ameturish tagging here):
<?xml version="1.0"?>
<project name="example-ruleset" default="rules">
<filelist id="a.srcs" dir="src/a" files="a.bf,b.bf,c.bf"/>
<filelist id="b.srcs" dir="src/b" files="a.ms,b.ms,c.ms"/>
<target name="rules">
<ruleset default="all">
<rule name="all" prerequisites="AAAA"/>
<rule name="aaaa-rule" filetargets="AAAA">
<prerequisites>
<filelist refid="${a.srcs}"/>
<filelist files="BBBB"/>
</prerequisites>
<some-ant-task src="${a.srcs}" out="AAAA"/>
</rule>
<rule name="bbbb" prerequisites="${b.srcs}">
<filetargets>
<filelist files="BBBB"/>
</filetargets>
<some-other-ant-task src="${b.srcs}" out="BBB"/>
</rule>
</ruleset>
</target>
</project>
The idea being that the rules handle file oriented build dependencies,
building only what is outofdate.
I think the tasks after prerequisites/filetargets in rule could include
antcall as well, i.e. some currently useful thing involving ant targets
and depends could be integrated into a rule by calling the target.
In the call to ant, the target name could identify the ruleset, and you
could select rules by name or maybe by filename, e.g.:
ant rules
ant rules -Dbuild="BBBB"
or
ant rules -Dbuild-name="aaaa-rule"
Kendall
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org