On 4/25/06, Andrew Goodnough <[EMAIL PROTECTED]> wrote:
>>> On Tue, Apr 25, 2006 at 11:13 am, in message
<[EMAIL PROTECTED]>, "Andrew
Close"
<[EMAIL PROTECTED]> wrote:
> hello,
>
> i'm having a bit of a brain- fart coming up with a solution to this
> situation. we have about 130 JAR files that we are building for a
> particular project. most of these JARs are dependent on each other
so
> they require a specific build order. i was hoping to create a list
of
> the projects that compose each JAR and feed this list to ANT to
build
> one at a time. i know the Ant- Contrib project has a <foreach> tag
> that allows for iteration, but i'm a bit stumped on how to build
> everything from a properties file. is this possible? or is there a
> better way to approach this?
>
> we're using VSS as source control and have several projects that are
> composed of several (130+) products/JARs in VSS. so i'd like to
make
> a list of Project.Product that i can iterate through and
> build/JAR/deploy in order.
> so in VSS we may have Project1 that contains ProductA, ProductB &
> ProductC and Project2 that contains ProductD & ProductE and Project3
> that contains ProductF, ProductG & ProductH. the build order may
end
> up being:
> ProductB, ProductG, ProductA, ProductC, ProductD, ProductF,
ProductE...
> so my initial idea was to create a master list that contains these
> products in their proper build order:
> Project1.ProductB
> Project3.ProductG
> Project1.ProductA
> Project1.ProductC
> Project2.ProductD
> Project3.ProductF
> Project2.ProductE
>
> our ANT build file is currently set up to build products
individually.
> so typically we'd pass in the ProjectName, ProductName, Branch,
> DeliverableType and DeploymentDest to build one product/JAR/etc. to
> build all applications (build world) we have to either type this in
> manually 130+ times or we use a .bat file that makes 130+ calls.
the
> problem with the .bat file is that if product 15 fails a bunch of
> builds that follow will fail due to dependency. there is no good
way
> to stop the build process on error. so i was hoping ANT would be
able
> to come to the rescue. :)
> hopefully this is enough background to either come up with a
solution
> or generate some discussion that will lead to a solution.
> thanks for any help you can offer.
>
>
---------------------------------------------------------------------
> To unsubscribe, e- mail: user- [EMAIL PROTECTED]
> For additional commands, e- mail: user- [EMAIL PROTECTED]
We have a large amount of projects with interdependencies, too. Our
process sets up a set of files (with pre-defined names) which allow the
project owner to configure dependencies, including triggering
sub-builds, in any. First, here's how the classpath is setup for the
compile. The "includesfile" property includes from the files.
<path id="project.class.path">
<dirset dir=".." includesfile="${classes.depend.file}"/>
<fileset dir="${lib.dir}" includesfile="${jars.depend.file}"/>
<fileset dir="${sharedlib.dir}"
includesfile="${sharedjars.depend.file}"/>
</path>
A typical jars.depend file looks like this:
===jars.depend===
xml-apis.jar
xerces-2_0_1.jar
xalan-j_2_3_1.jar
=============
and
===classes.depend===
Global-Utils/build/classes
Parent-Proj/build/classes
===============
Second, if in addition to including the classes from Global-Utils and
Parent-Proj, you want this project to build both projects before
building itself, then have your compile target depend on sub-compile
target like:
<target name="compile-subprojects">
<subant target="compile">
<dirset dir=".." includesfile="${projects.depend.file}"/>
</subant>
</target>
<target name="compile" depends="init,compile-subprojects"
description="Compiles the source files">
<javac srcdir="${src.dir}"
destdir="${build.classes}">
<classpath refid="project.class.path"/>
</javac>
</target>
where you put the 2 projects in the projects.depend:
===projects.depend===
Global-Utils
Parent-Proj
===============
Each project must have standard target names to use this scheme, but it
scales well. We use Entity references to gain a type of inheritance in
Ant to reuse common targets but that's another topic. Good luck!
Andy,
thanks for your reply.
so do you have a single task/target that you kick off that builds
everything for you? would i end up with 130+ individual targets
that depend on each other in your scenario?
i.e:
<target name="ProductA">
<ant antfile="jar.xml" dir="build.dir" target="all" >
<property name="ProductA" ... />
</ant>
</target>
<target name="ProductB" depends="ProductA>
<ant antfile="jar.xml" dir="build.dir" target="all" >
<property name="ProductB" ... />
</ant>
</target>
<target name="ProductC" depends="ProductB>
<ant antfile="jar.xml" dir="build.dir" target="all" >
<property name="ProductC" ... />
</ant>
</target>
this scenario is what i was hoping to avoid by building a list of
projects to be build in the correct order. maybe i'm missing
something though...
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]