Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: for the plan.

Jump to: navigation, search

Ant/Ant buildfile refactorings

< Ant
Ant buildfile refactorings
Possible mentors: Darin Swanson
Related Project: Platform Ant
Description: Ant buildfiles can become large and complex and would benefit from refactoring. Currently there is no support beyond renaming within a buildfile to allow the developer to efficiently refactor Ant buildfiles. The goals would be to implement an infrastructure to support refactorings in Ant buildfiles, participate in other components refactorings and provide a starter set of Ant buildfile refactorings.
Further information


Of course, eclipse supports ant. But now, in modern project ant build files became too difficult to maintaine and refactor. Goal of this project - to implement an infrastructure to support refactorings for ant files, provide more clear and visual tool for working with ant tasks ant targets.

List of Ideas for 2009 Google Summer Of Code (taken from eclipse bug db)

1. Something like "extract method":

  • You select one task and could generate a <presetdef>.
  • You select multiple tasks and could generate a <macrodef>.
  • You select a <script> and could generate a <scriptdef>. (2) could be used inside

2. Introduce attributes (see "introduce parameters" on methods)

<macrodef name="foo">
        <echo message="Hello World"/>

would be

<macrodef name="foo">
    <attribute name="msg"/>
        <echo message="@{msg}"/>
<foo msg="Hello World"/>

3. Convert <presetdef> to <macrodef> Rename <presetdef> to <macrodef> and include the <sequential> container.

4. Rename
- rename of properties - definitions by <*def>

 -- change the value in the name-attribute
 -- change the value in "tasks"
 -- example (from 2):
    foo --> myecho
    --- <macrodef name="myecho">...
    --- <myecho msg="...

5. Extract property - Select an attribute value and it will introduce a property with that value.

  <echo message="Hello World"/>

...converted to...

  <property name="msg" value="Hello World"/>
  <echo message="${msg}"/>

6. Property bundle (see I18N-stuff) - gives a list with all properties - you select the properties to put into the new file - will be created and load into the build file

7. Pull up / push down - In Java code this means moving between a class and its parent. Here it would move between the actual buildfile and an <import>ed one. Could also be done with Drag&Drop in the Outline View (drag target on <import>) or Package Explorer. A somewhat related DND bug is bug 257209.

Current status

Tuesday, May 26, 2009 Start work on requirements. Ideas - there are very good, but we need more detailed requirements for putting up al details ;)
Tuesday, May 26, 2009 Start work on usecases. With usecases I`ll check if I complete idea or not.
Wednesday, June 10, 2009 Finish with docs, let`s go coding!
Sunday, August 23, 2009 Pause development because of official finish date of GSoC. I`m planning continue work on these ideas in the future (likely start in a week).

At present finished:
Rename: fixed existing bugs, added new functionality. Ready for check in.
Extract task to presetdef: finished with limitation. Currently not fully ready for check in (of should be disabled before check in)

Latest version of patch is available as attachment to origin bug.

For future period

If all previous ideas would been realized, I`m planning extend them with ant dependency grafic representation.


jabber: on
email: on
irc: st_shadow_by , chanels #gsoc & #eclipse-soc on

Back to the top