( this is being sent by M$ Exchange client v5.0 ;
no known way to switch to plain text messages. If anyone
knowns one, please tell ! )
Hi!
I came from C/Makefile background and joined recently a java project, that
uses ant for the
buil environment.
There are a few problems :
- (first:) ant does too much work, when it is not needed
We have several targets for ant :
- rebuild
<target name="rebuild" depends="clean, build" description="Rebuild
all"/>
this deletes all built files and build them from scratch
- build
<target name="build" depends="jar, jar-test" description="Build all"/>
- jar
<target name="jar" description="Build all jar files"
depends="jar-a, jar-b, jar-xyz">
- jar-b
<target name="jar-b" depends="compile, write-build-id-txt">
- ... and many more dependent targets
The problems is , that if we do "ant rebuild" and the immediatelly after it
"ant build" , it will build new almost everything. With "make" on my
earlier
projects, it would notice that everything is up to date and do ( almost )
nothing. Is there anything to that can be done to improve this ?
Note that this is not only about compiling, but also copying, packaging to
jars,
running scripts to dynamically generate code, etc ...
- (second:) a subproblem of the first problem
the actual compile target compiles every source file, not just updated
ones.
This is related to that FAQ question. We have the source files in a
different
tree layout that the package hierarchy. Changing the dir structure in the
middle of the project is not an option. Is there any other solution ?
Currently we try this :
- copy new files to temp dir with the "correct" directory layout
<copy todir="${generated.src.dir}/${build.pkg.basedir}"
preservelastmodified="true" overwrite="false">
- compile them there
<javac srcdir="${generated.src.dir}" ...
Not the best solution, but it works. Most of the time. Instead of
rebuilding
all 500 java source files, it "just" rebuilds 150 of them. All this for a
single
changed java source file, or not even that. It rebuilds 150 files, even
if no
change was done to the project.
- (third:) bad (no) dependency check
If I build the project, then change one java source file and call "ant
build",
it will not rebuild other files that use and therefore depend on the file
I just
changed. This problem might be caused by our "solution" to the second
problem.
All this causes many problem with the project, like :
- developers make changes that appear to work correctly with "ant build",
but
they fail with "ant rebuild" the next day and then nobody knows what
caused
the problem.
- developers start using "ant rebuild", because the former makes "ant
build"
useless. But as a full rebuild takes too much time for a one line change
in the sources, people start compiling stuff by hand, which again leads
to
the problem "rebuild fails, nobody knows why"
It appears that we would be better of without ant.
As I am a complete ant newbie, I can't tell if the cause of our trouble is
that
our build.xml file sucks, or that ant is not the tool that we need.
Please advise !
Sincerely,
David
----------------------------------------------------------------------------
-----------
David Balazic mailto:david.balazic@hermes.si
HERMES Softlab http://www.hermes-softlab.com
Zolajeva 30 Phone: +386 2 450 8851
SI-2000 Maribor
Slovenija
----------------------------------------------------------------------------
-----------
"Be excellent to each other." -
Bill S. Preston, Esq. & "Ted" Theodore Logan
----------------------------------------------------------------------------
-----------
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org
|