Rework Ant build.xml to use macrodef instead of antcall
-------------------------------------------------------

                 Key: PIG-2362
                 URL: https://issues.apache.org/jira/browse/PIG-2362
             Project: Pig
          Issue Type: Improvement
            Reporter: Gianmarco De Francisci Morales
            Assignee: Gianmarco De Francisci Morales
            Priority: Minor


Antcall is evil: http://www.build-doctor.com/2008/03/13/antcall-is-evil/
We'd better use macrodef and let Ant build a clean dependency graph.
http://ant.apache.org/manual/Tasks/macrodef.html

Right now we do like this:
{code}
<target name="buildAllJars">
  <antcall target="buildJar">
    <param name="build.dir" value="jar-A"/>
  </antcall>
  <antcall target="buildJar">
    <param name="build.dir" value="jar-B"/>
  </antcall>
  <antcall target="buildJar">
    <param name="build.dir" value="jar-C"/>
  </antcall>
</target>
<target name="buildJar">
  <jar destfile="target/${build.dir}.jar" basedir="${build.dir}/classfiles"/>
</target>
{code}

But it would be better if we did like this:
{code}
<target name="buildAllJars">
  <buildJar build.dir="jar-A"/>
  <buildJar build.dir="jar-B"/>
  <buildJar build.dir="jar-C"/>
</target>

<macrodef name="buildJar">
  <attribute name="build.dir"/>
  <jar destfile="target/${build.dir}.jar" basedir="${build.dir}/classfiles"/>
</macrodef>
{code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to