ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "PREMKUMAR, N [AG/8042]" <n.premku...@monsanto.com>
Subject Can properties be returned to a calling ant script ? : for OOAD i n ANT use this *pattern*
Date Sat, 16 Nov 2002 10:47:17 GMT
> Okay, I'll bite.  Why isn't this a good idea?  I would like to have
> a way that all common properties are set in a single build
> script so I don't have to modify all my build scripts if changes
> are made.   Can you suggest another method?

  I 've gone thro the same difficulty .. 

  Some sort of OOAD in ANT w.r.t reuse ?  Hmmm.. I use the following
technique ..

  I have one build file called *MasterBuild.xml* and one build file for
every-project *ProjectA1Build.xml* 

  In *Design Pattern* terminology .. the technique that I describe below may
be called as *Template Method*. You may consider "MasterBuild.xml" as
equivalent of base-class and "ProjectA1Build.xml" as derived-class
(approximately) .

MasterBuild.xml :

   # I put all the common properties here.
   # I define all the common tasks here .. like 
             init
             prepare
             clean
             compile
             makeJavaDoc
             package
             build
             rebuild
             emailBuildResults
   

ProjectA1Build.xml :

   # I customize the necessary properties (that are unique to this project).

   Example :

#################  ProjectA1.xml  STARTS
<project name="ProjectA1" default="defaultTarget" basedir="." >
    <property	name	="projectName" 	value	="ProjectA1" />

    <!-- This property will be used while creating project jars -->
    <property name="projectMainClassInJar"
value="com.monsanto.xyz.ProjectA1"/>

      <!-- This property will be used for generating JavaDoc for appropriate
packages-->
	<property name="packagePrefix" value="com/monsanto/xyz/" />
	<patternset  id="javadoc_package_includes" >
	  <include
name="${packagePrefix}${projectName}/ClientBusinessLogic/**" />
	  <exclude name="${packagePrefix}${projectName}/test/**" />
	</patternset>

The *IMPORTANT* link :

	In addition to all the above *customization* for ProjectA1 .. "all
my ProjectA__" will contain the following two lines. [one can put this value
in environment-variable]

	<property name="masterBuildFilePath" value="./MasterBuild.xml" />
	<property name="execTarget" value="" />

"All my ProjectA__" will also contain this *singggggle* *VERY IMPORTANT*
task : 

	<target name="defaultTarget" depends="init" description="Create
directories that are missing" > 
	  <echo message="Entering prepare ProjectA1Build.xml"/>
	  	<ant antfile="${masterBuildFilePath}" target="${execTarget}"
inheritAll="true" inheritrefs="true" />
	  <echo message="Exiting prepare ProjectA1.xml"/>
	</target>
</project>
#################  ProjectA1.xml  ENDS 


HOW TO EXECUTE :

    OBJECTIVE : To *rebuild* ProjectA1 ..

    ant -buildfile ProjectA1Build.xml -DexecTarget=rebuild



Definition for *Template Method* Design Pattern :
  An application framework allows you to inherit from a class or set of
classes and create a new application, reusing most of the code in the
existing classes and overriding one or more methods in order to customize
the application to your needs. A fundamental concept in the application
framework is the Template Method which is typically hidden beneath the
covers and drives the application by calling the various methods in the base
class (some of which you have overridden in order to create the
application).



Hope this helps to solve your prob ..

Thanks,
Premkumar.N



Sr.Programmer Analyst( Bioinformatics)
Monsnato Enterprises
Bangalore, INDIA.
pondyprem@yahoo.com, prem007@hotmail.com








-----Original Message-----
From: Dave Rathnow [mailto:dave.rathnow@wrx-ca.com]
Sent: Friday, 15 November 2002 8:51 PM
To: 'Ant Users List'
Subject: RE: Can properties be returned to a calling ant script?


> > 2. Can you have a called Ant script define properties which 
> > can be picked up by the calling Ant script.
> 
> Write them to a file that gets read back in by the parent build
> process.  Most of the time, you don't want to do this 8-)

Okay, I'll bite.  Why isn't this a good idea?  I would like to have
a way that all common properties are set in a single build
script so I don't have to modify all my build scripts if changes
are made.   Can you suggest another method?

Thanks,
Dave.

--
To unsubscribe, e-mail:   <mailto:ant-user-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:ant-user-help@jakarta.apache.org>

--
To unsubscribe, e-mail:   <mailto:ant-user-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:ant-user-help@jakarta.apache.org>


Mime
View raw message