You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

requested-features.txt 12 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359
  1. List of requirements for Ant2 split into categories.
  2. If you disagree with the category something has been put into, speak
  3. up.
  4. I. Things that don't affect the core but are requests for new tasks or
  5. enhancements of existing tasks.
  6. ======================================================================
  7. * Add a new datatype filterset to group token-filters
  8. * make usage of particular filters/filtersets explicit in copy tasks
  9. * make facade tasks for things like javac (JikesImpl, ModernImpl etc)
  10. One candidate is rmic with implementations for Kaffee and Weblogic
  11. for example.
  12. * unify multiple similar tasks to use similar forms (ie all the javacc
  13. type tools)
  14. * Obfuscating task
  15. * Add an <ant> task that will find build files according to a fileset
  16. and invokes a common target in them.
  17. <anton>?
  18. * Add a JavaApply task that executes a given class with files from a
  19. fileset as arguments - similar to <apply>.
  20. * Include some more sophisticated loggers with the Ant distribution -
  21. especially for sending emails. Make the existing one more flexible
  22. (stylesheet used by XmlLogger).
  23. Could be part of the same module task would be developed in?
  24. * make the default logger's output clear, informative, and terse.
  25. Actually, this is a little bit abstract, but doesn't apply to the
  26. core either.
  27. * Better docs.
  28. More examples. Tutorials, beginner documents, reference sheets for
  29. tasks, printable version.
  30. * RPM task.
  31. * add an attribute to <property> to read in an entire file as the
  32. value of a property.
  33. * Task for splitting files (head/tail/split like functionality).
  34. * Task to create XMI from Java.
  35. * socksified networking tasks, SSH tasks.
  36. * a reachable task that works much like available for network URLs.
  37. * make PATH handling consistent. Every task that has a PATH attribute
  38. must also accept references to PATHs.
  39. * Task to extract classes from a JAR file that a given class depends
  40. on.
  41. Based on <depend> of IBM's JAX for example.
  42. * Unify <available> and <uptodate> into a more general <condition>
  43. task, support AND/OR of several tests here.
  44. II. Abstract goals that need to be abstract until we get into design
  45. decisions.
  46. ======================================================================
  47. * remove magic properties if at all humanly possible
  48. * remove as much dependency on native scripts as possible.
  49. * clean object model (ie Project/Target/Task)
  50. * good event model to integrate well with IDE/GUI/whatever
  51. * use a consistent naming scheme for attributes across all tasks
  52. * keep build file syntax as compatible to Ant1 as possible -
  53. i.e. don't break something just because we can.
  54. * keep the interface for Tasks as similar to the one of Ant1 as
  55. possible - i.e. don't break something just because we can.
  56. * Ant should be cancelable
  57. * no commit without documentation (ouch 8-)
  58. III. Things that are simple, easy to implement, where we expect the
  59. committers to agree
  60. ======================================================================
  61. * namespace support so different concerns can occupy different namespaces
  62. from ant (thus SAX2/JAXP1.1)
  63. * Java2
  64. * remove all deprecated methods, attributes, tasks
  65. * allow all datatypes to be defined anywhere - i.e. as children of
  66. project as well as of target.
  67. * make properties fully dynamic, i.e. allow their value to be reassigned
  68. * unify the namespace of all data types (ie properties + filesets +
  69. patternset + filtersets).
  70. * add a user defined message if a target will be skipped because the
  71. if/unless attribute says so.
  72. IV. Things we probably agree upon but need to discuss the details or
  73. decide between several possible options.
  74. ======================================================================
  75. * The ability for GUI/IDE tools to integrate easily with object model
  76. without reinventing the wheel and writing their own parser (which
  77. antidote was forced to do).
  78. Two suggested solutions were allowing GUI developers to extend
  79. object model (ie GUITask extends Task) or to have Task as interface
  80. (ie GUITask implements Task). This way the GUI tasks could be W3C
  81. DOM Elements, have property vetoers/listeners etc.
  82. * support for numerous frontends - from command line over GUI to servlets
  83. corollary of the above?
  84. * Fully interpreted at runtime. This almost requires some form of
  85. abstraction/proxy that stands in place of tasks till it is
  86. interpreted. This can be hashtables/simple dom-like model/whatever
  87. * provide utility classes to aid in building tasks. ie like up-to-date
  88. functionality abstracted
  89. Need to become more specific here.
  90. * make ant-call a low cost operations so it can certain
  91. optional/template-like operations
  92. corollary of "fully interpreted at runtime"?
  93. * allow facilities to build projects from multiple sources. ie CSS+xml
  94. or XSLT+ XML or Velocity+text or database or from inside jars or normal
  95. build.xmls etc.
  96. * move to a system that allows docs to be generated - doc snippets
  97. should be included with the tasks they document.
  98. Which DTD? Which tools for generation?
  99. * allow tasks to be loaded from jars. tasks should be indicated by
  100. either xml file in TSK-INF/taskdefs.xml or manifest file.
  101. * allow documentation to be stored in .tsk jars
  102. corollary of the two points above?
  103. * better scripting/notification support so the hooks are available to
  104. send notifications at certain times.
  105. Which hooks and where?
  106. * separate tasks into .tsk jars somehow. (Probably via function - ie
  107. java tasks, file tasks, ejb tasks).
  108. Decide on categories.
  109. * make separate build files easy (ala AntFarm) and importing different
  110. projects a breeze
  111. * provide support for user defined task configurations - i.e. give
  112. users the ability to specify a default value for attributes (always
  113. use debug="true" in <javac> unless something else has been
  114. specified).
  115. Three ideas so far: a CSS like language, a <taskconfig> element,
  116. properties following a specific naming scheme.
  117. * support more control over the properties that are going to be passed
  118. to subprojects (modules)
  119. * Ask for a new CVS module for Ant tasks.
  120. We need to define rules for this to work - maybe the rules proposed
  121. for the commons project could give us a start.
  122. * It should be possible to modify details of the actual build (e.g. classpath,
  123. used compiler) without the need to change the build specification.
  124. Do build.compiler and build.sysclasspath cover everything or do we
  125. need to add more stuff like this?
  126. * Task to prompt for user input.
  127. Does affect core as we need a means to request input from the Frontend.
  128. * Add cvs login feature.
  129. Requires handling of user input.
  130. * Easier installation process. GUI - maybe webstart from the homepage.
  131. This includes asking the user whether he wants to use optional tasks
  132. and downloads the required libs. Automatic upgrades and so on.
  133. * Logo for Ant.
  134. * detach Ant from System.err/.in/.out.
  135. Beware of problems with spawned processes.
  136. * better subproject handling
  137. Whatever that means in detail.
  138. V. Things we probably don't agree on.
  139. ======================================================================
  140. * Allow mappers to be genericised so that particular features can be modified
  141. during mapping. Something similar to
  142. <fileset ...>
  143. <include name="*.sh"/>
  144. <mapper type="unix-permissions">
  145. <param name="user" value="ant"/>
  146. <param name="group" value="ant"/>
  147. <param name="mod" value="755"/>
  148. </mapper>
  149. </fileset>
  150. * Allow include/exclude tow work with multiple characteristerics of a file.
  151. ie include into fileset if file is readable, modified after 29th of Feb,
  152. has a name that matches patter "**/*.java" and the property "foo.present"
  153. is set. Something similar to
  154. <include>
  155. <item-filter type="name" value="**/*.java"/>
  156. <item-filter type="permission" value="r"/>
  157. <item-filter type="modify-time"
  158. operation="greater-than"
  159. value="29th Feb 2003"/>
  160. </include>
  161. 2003 is no leap year 8-)
  162. * provide datatypes through property tag and remove need for separate free
  163. standing entities. ie
  164. <property name="foo">
  165. <fileset dir="blah">
  166. <include name="*/**.java" />
  167. </fileset>
  168. </property>
  169. * make it possible to reuse taskengine for other things. ie
  170. Installshield type app, Peter's cron-server and other task based
  171. operations.
  172. * provide support for non-hardwired (ie loadable) low-level
  173. components (mappers/itemset-filters/converters). Allow them to be
  174. loaded in either global or a new classloader.
  175. * force resolution of classes on loading to identify classloader
  176. issues early. (At least in global classloader).
  177. * create the concept of workspace so that projects can be built in a
  178. DAG and thus enable projects like catalina/tomcat to have an easy
  179. build process. It also helps CJAN to a lesser degree and would
  180. partially solve the JARs in CVS thing.
  181. * provide support for CJAN
  182. Q: In what way?
  183. A: Probably by supplying a set of tasks that download versioned
  184. binaries and their associated dependencies, caching the downloads
  185. in a known place and updating binaries when required. ("When required"
  186. being indicated by a change in property values).
  187. * provide support for non-hardwired (ie loadable) converters.
  188. Q: What is a converter? Is this an implementation detail?
  189. A: Not an implementation detail but a way to extend the engine
  190. to convert more data types. Currently we have fixed set that is
  191. expanded on occasion (ie includes primitive types + File). Instead
  192. of spreading converting code through out tasks it can be centralized
  193. into one component and used by engine. This becomes particularly
  194. relevent if you build ant based testing systems and use ant in certain
  195. web-related areas.
  196. * generate docs by anakia/XSLT
  197. Corollary of "move to a system that allows docs to be generated"?
  198. * tasks provide some way to identify their attributes from the
  199. outside.
  200. Possible solutions include a special method like getProperties(), an
  201. external describing file shipping with the task class or special
  202. javadoc comments parsed by a custom doclet. Whatever the method it
  203. should not impose any cost on runtime as it is only used a small
  204. proportion of the time (design-time).
  205. * allow build file writers to modify logging (verbosity for example)
  206. on a target by target or task by task basis.
  207. * Simple flow control (if-then-else, for)
  208. * Multithreaded execution of tasks within the same target.
  209. * Multithreaded execution of targets.
  210. * Project inheritance
  211. What's this?
  212. * Target inheritance. ie The ability to include targets from other
  213. project files overidining them as necessary (so cascading project
  214. files).
  215. * Add an attribute to <ant> to feed back the environment (properties and
  216. taskdefs) from the child build to the parent.
  217. * Ability to manage scopping of properties in general (ie target/project/workspace).
  218. * it should be possible to provide general /(template?)/ build
  219. specifications, and to declare for a concrete item that it should be
  220. built according to such a general specification.
  221. * a built-in mechanism to include build-file fragments - something
  222. that doesn't use SYSTEM entities at all and therefore is XSchema
  223. friendly, allows for property expansions ...
  224. * Make loggers configurable via build.xml.
  225. * tasks should have access to its own XML representation.
  226. * Allow named tasks to be defined by <script> elements.
  227. * Let Ant ignore - but warn - if unknown XML elements or attributes
  228. occur in a build file.
  229. * Allow ant to farm out attributes and elements that are NOT in the ant
  230. namespace to other components. ie hand doc: elements to the Documentation
  231. component or log: attributes to Log policy component etc
  232. * specify an onfail task or target that runs in case of a build
  233. failure.
  234. * Support nesting tasks into other elements - not just as children of
  235. target - as proposed by Thomas Christen in
  236. <http://marc.theaimsgroup.com/?l=ant-dev&m=98130655812010&w=2>.
  237. * Task level if and unless attributes.