ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Donald <dona...@apache.org>
Subject Re: Did somebody say Shut up and Write? :)
Date Wed, 20 Dec 2000 03:43:58 GMT
At 01:23  19/12/00 -0800, Diane Holt wrote:
>Hi Jim,
>
>Would you be able to say if your "frANTic" proposal will help simplify the
>way I currently have to use Ant to deal with the build issues I have, and
>if so, how?

Nope - no difference in anyway at all as I see it ;)

>I'm trying to understand the differences between the various proposals,
>but I'm not really able to do that at this point, since I haven't seen any
>examples of real-world use cases. I don't expect any of the proposals to
>eliminate the build issues I have to deal with -- what I'm looking for are
>examples of how proposal A will help simplify the way I need to use Ant to
>accommodate the build issues I have.

Well heres how I think the projects will effect you. Currently as I
understand it almost all of your issues *should* be at least partially
solved. If not then speak up ;)

What you call rules I call templates. In myrmidon the following construct
would hopefully be doable when/if tasks are actually written for it.

<target name="compile-template">
  <!-- note that the variables 
       template.compiler, template.classpath and template.dest, template.files
       must be set -->

  <javac implementation="${template.compiler}" dest="build/${template.dest}">
    <classpath value="${template.classpath}"/>
    <fileset value="${template.files}"/>
  </javac>

  <jar ... dest="dist/${template.dest}.jar">
    <fileset value="${template.files}"/>
    ...
  </jar>

  <signjar file="dist/${template.dest}.jar" 
	    dest="dist/${template.dest}-signed.jar" signer="bob" />

  <copy todir="my/final/destination">
    <include name="dist/${template.dest}-signed.jar" />
  </copy>

 ...
</target>

<target name="compile-1">
  <ant-call target="compile-template" >
    <param name="template.compiler" value="jikes" />
    <param name="template.dest" value="myproduct" />
    <param name="template.classpath">
      <classpath ref="myproducts.classpath"/>
    </param>
    <param name="template.files">
      <fileset dir="myproduct/src">
        <include name="com/biz/myproduct/**" />
      </fileset>
    </param>
  </ant-call>
</target>

<target name="compile-2">
  <ant-call target="compile-template" >
    <param name="template.compiler" value="jikes" />
    <param name="template.dest" value="myOtherProduct" />
    <param name="template.classpath">
      <classpath ref="myOtherProduct.classpath"/>
    </param>
    <param name="template.files">
      <fileset dir="myproduct/src">
        <include name="com/biz/myOtherProduct/**" />
      </fileset>
    </param>
  </ant-call>
</target>

etc.

So effectively you can implement your rules efficiently. While this is
currently possible in ant - it reloads whole build file for each ant-call.
Myrmidon does this just as efficiently as other target executions. It is
actually very similar to the way recently mentioned CONS does it I think.

If the above templating is not enough it would be possible to specify a new
ProjectBuilder on ant command line that transformed an input xml file + a
XSLT file to produce build.xml in memory and build with that. This would be
able to do heaps more (all *static* template techniques while ant-call
satisfies dynamic template constraints).

AntFarm would help if your build process could be seperated into seperate
projects easily. ie could you seperate it into different projects for
foo.jar, bar.jar, blah.jar and blee.jar. It builds a project dependency
list so if bar.jar depends on foo.jar then it will order builds correctly.

so when you called build-bar.xml it would also run build-foo.xml for you.
This is the best proposal yet for hug build projects.

JDDs recent proposal is similar to AntFarm except that it relies more on a
global workspace file that sets some properties across all project files.
It also seems to require that the user manually build appropriate
dependencies between "modules". The module files are also less easy to
reuse independent of workspace file.

>I would also like to have a property-setting build-file that I could
>"include", rather than having the same (or nearly the same) project-level
><property>'s in each of my 65 build-files -- would "frANTic" allow for a
>simple way to do that, and if so, how?

AntFarm and JDDs proposal would. JDDs does it more elegently thou.


>BTW: Anyone else who's put forth a proposal who'd like to offer examples,
>please feel free. I don't know if other people feel this way, but I really
>need to see how something would actually work before I can say "yea" or
>"nay" as to whether I like it.

I agree ;)

Cheers,

Pete

*-----------------------------------------------------*
| "Faced with the choice between changing one's mind, |
| and proving that there is no need to do so - almost |
| everyone gets busy on the proof."                   |
|              - John Kenneth Galbraith               |
*-----------------------------------------------------*


Mime
View raw message