Todd Lipcon wrote:
On Wed, Jul 1, 2009 at 10:10 PM, Raghu Angadi <rang...@yahoo-inc.com> wrote:

-1 for committing the jar.

Most of the various options proposed sound certainly better.

Can build.xml be updated such that Ivy fetches recent (nightly) build?


This seems slightly better than actually committing the jars. However, what
should we do when the nightly build has failed hudson tests? We seem to
sometimes go weeks at a time without a "green" build out of Hudson.


HDFS could have a build target that builds common jar from a specified
source location for common.


This is still my preffered option. Whether it does this with a <javac> task
or with some kind of <subant> or even <exec>, I think having the source
trees "loosely" tied together for developers is a must.

Here's a stripped down version of how we order our child builds; ivy works out the order to build things. Anything in the subdir external/ gets build too, so I can play games with other projects and symbolic links

 <target name="ivy-init" depends="ivy-init-antlib"
          xmlns:ivy="antlib:org.apache.ivy.ant">
    <presetdef name="ivy-projects">
      <ivy:buildlist onMissingDescriptor="skip">
        <fileset file="smartfrog/build.xml" />
        <fileset file="testharness/build.xml" />
        <fileset file="antbuild/build.xml" />
        <fileset dir="release">
          <include name="build.xml" unless="do.not.release"/>
        </fileset>
        <fileset dir="extras" includes="**/build.xml">
        </fileset>
        <fileset dir="components" includes="**/build.xml" >
          <!--lacks the artifacts to compile-->
<exclude name="constraints/build.xml" unless="constraints.enabled"/>
        </fileset>
        <!--place for symlinks to external projects you want included-->
        <fileset dir="external" includes="**/build.xml"/>
      </ivy:buildlist>
    </presetdef>
    <ivy-projects reference="child.projects" />
    <echo level="verbose">The order to build the projects is
      ${toString:child.projects}
    </echo>
    <!-- build them-->
    <presetdef name="ivy-delegate" description="Delegate the build">
      <subant verbose="true">
        <buildpath refid="child.projects"/>
      </subant>
    </presetdef>

This creates a new task <ivy-delegate> that gives the work to the children in the right order, you then delegate the work

  <target name="clean" depends="ivy-init,ivy-dirs"
    description="pass clean down to all the ivy-managed projects">
    <ivy-delegate target="clean" />
  </target>

Reply via email to