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 6.2 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  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. * make usage of particular filters/filtersets explicit in copy tasks
  8. * make facade tasks for things like javac (JikesImpl, ModernImpl etc)
  9. * unify multiple similar tasks to use similar forms (ie all the javacc
  10. type tools)
  11. * Obfuscating task
  12. II. Abstract goals that need to be abstract until we get into design
  13. decisions.
  14. ======================================================================
  15. * remove magic properties if at all humanly possible
  16. * remove as much dependency on native scripts as possible.
  17. * clean object model (ie Project/Target/Task)
  18. * good event model to integrate well with IDE/GUI/whatever
  19. * use a consistent naming scheme for attributes across all tasks
  20. * keep build file syntax as compatible to Ant1 as possible -
  21. i.e. don't break something just because we can.
  22. * keep the interface for Tasks as similar to the one of Ant1 as
  23. possible - i.e. don't break something just because we can.
  24. III. Things that are simple, easy to implement, where we expect the
  25. committers to agree
  26. ======================================================================
  27. * namespace support so different concerns can occupy different namespaces
  28. from ant (thus SAX2/JAXP1.1)
  29. * Java2
  30. * remove all deprecated methods, attributes, tasks
  31. * allow all datatypes to be defined anywhere - i.e. as children of
  32. project as well as of target.
  33. * make properties fully dynamic, i.e. allow their value to be reassigned
  34. * unify the namespace of all data types (ie properties + filesets +
  35. patternset + filtersets).
  36. IV. Things we probably agree upon but need to discuss the details or
  37. decide between several possible options.
  38. ======================================================================
  39. * The ability for GUI/IDE tools to integrate easily with object model
  40. without reinventing the wheel and writing their own parser (which
  41. antidote was forced to do).
  42. Two suggested solutions were allowing GUI developers to extend
  43. object model (ie GUITask extends Task) or to have Task as interface
  44. (ie GUITask implements Task). This way the GUI tasks could be W3C
  45. DOM Elements, have property vetoers/listeners etc.
  46. * support for numerous frontends - from command line over GUI to servlets
  47. corollary of the above?
  48. * Fully interpreted at runtime. This almost requires some form of
  49. abstraction/proxy that stands in place of tasks till it is
  50. interpreted. This can be hashtables/simple dom-like model/whatever
  51. * provide utility classes to aid in building tasks. ie like up-to-date
  52. functionality abstracted
  53. Need to become more specific here.
  54. * make ant-call a low cost operations so it can certain
  55. optional/template-like operations
  56. corollary of "fully interpreted at runtime"?
  57. * allow facilities to build projects from multiple sources. ie CSS+xml
  58. or XSLT+ XML or database or from inside jars or normal build.xmls
  59. etc.
  60. * move to a system that allows docs to be generated - doc snippets
  61. should be included with the tasks they document.
  62. Which DTD? Which tools for generation?
  63. * allow tasks to be loaded from jars. tasks should be indicated by
  64. either xml file in TSK-INF/taskdefs.xml or manifest file.
  65. * allow documentation to be stored in .tsk jars
  66. corollary of the two points above?
  67. * better scripting/notification support so the hooks are available to
  68. send notifications at certain times.
  69. Which hooks and where?
  70. * separate tasks into .tsk jars somehow. (Probably via function - ie
  71. java tasks, file tasks, ejb tasks).
  72. Decide on categories.
  73. * make separate build files easy (ala AntFarm) and importing different
  74. projects a breeze
  75. * provide support for user defined task configurations - i.e. give
  76. users the ability to specify a default value for attributes (always
  77. use debug="true" in <javac> unless something else has been
  78. specified).
  79. Three ideas so far: a CSS like language, a <taskconfig> element,
  80. properties following a specific naming scheme.
  81. * support more control over the properties that are going to be passed
  82. to subprojects (modules)
  83. * Ask for a new CVS module for Ant tasks.
  84. We need to define rules for this to work - maybe the rules proposed
  85. for the commons project could give us a start.
  86. V. Things we probably don't agree on.
  87. ======================================================================
  88. * provide datatypes through property tag and remove need for separate free
  89. standing entities. ie
  90. <property name="foo">
  91. <fileset dir="blah">
  92. <include name="*/**.java" />
  93. </fileset>
  94. </property>
  95. * make it possible to reuse taskengine for other things. ie
  96. Installshield type app, Peter's cron-server and other task based
  97. operations.
  98. * create the concept of workspace so that projects can be built in a
  99. DAG and thus enable projects like catalina/tomcat to have an easy
  100. build process. It also helps CJAN to a lesser degree and would
  101. partially solve the JARs in CVS thing.
  102. * provide support for CJAN
  103. In what way?
  104. * provide support for non-hardwired (ie loadable) converters.
  105. What is a converter? Is this an implementation detail?
  106. * generate docs by anakia/XSLT
  107. Corollary of "move to a system that allows docs to be generated"?
  108. * tasks provide some way to identify their attributes from the
  109. outside.
  110. Possible solutions include a special method like getProperties(), an
  111. external describing file shipping with the task class or special
  112. javadoc comments parsed by a custom doclet.
  113. * allow build file writers to modify logging (verbosity for example)
  114. on a target by target or task by task basis.
  115. * Simple flow control (if-then-else, for)
  116. Either in core or - with the help of something like Thomas
  117. Christen's proposal
  118. <http://marc.theaimsgroup.com/?l=ant-dev&m=98130655812010&w=2>
  119. as tasks.
  120. * Multithreaded execution of tasks within the same target.
  121. * Multithreaded execution of targets.
  122. * Project inheritance
  123. What's this?
  124. * Target inheritance
  125. What's this?