Hi Sean,
I wish I'd checked and seen your response before sending... I started
my email last night and finished this morning without checking the
mail box...
On Jun 23, 2005, at 6:09 AM, Sean Schofield wrote:
Keep in mind that the 'download-dependencies' target need only be
called once. Actually, it need never be called if you want to get the
jars through your own methods. As you will see in the Struts build
process, you can set up your properties file to use your local copy of
the jar files at any point you wish. So you won't be prevented from
building if there is a problem with the Maven repository.
Only having to do it once (download-dependencies) is a good thing but
has the potential of issues with custom build jars such as the two
outlined in my previous email below.
I also really like having each dependency being a property in the
build process so that we can all point to our own local copies of the
jar files. However that requires greater discipline on our part to
not use 'unreleased' stuff like IDBNValidator and the RSSDigester.
Which IMO would be a good thing, but it keeps us from offering
features, which many will see as a bad thing.
Its bad practice to keep the jar files in SVN if you have a reasonable
alternative. A spot check of existing Apache projects reveals that
none of them store jar files in SVN. This includes Struts and Jakarta
Commons. IMO its time for MyFaces to adopt this practice as well.
The download-dependencies target is just an elegant solution used by
Struts to help the user get those jars.
Well, I partially agree. In most of my 'real job' work we keep open
source code and jars in a repo so that we can always have a 'working'
copy of the project in case one of the dependent OSS projects goes
off on a path the 'real job' project can't follow. In fact the svn
folks have a really cool tool to help you keep your dependent code up
to date (svn_load_dirs.pl). I'm not suggesting that we (MyFaces) be
so stringent in our approach but keeping the jars (esp the custom
built ones) in our repo is not all together bad.
In an ideal world though I'd buy into what you are suggesting if we
could keep from using any unreleased code and we had as part of our
auto build a way to build against the nightlies of the other projects
we depended on. That would allow us early warning that we are no
longer compatible with a 'soon' to be released version of something
(like in the case of digester).
Anyway, thanks again for all your hard work.
TTFN,
-bd-
On Jun 23, 2005, at 6:14 AM, Bill Dudney wrote:
I like simple, so I'm inclined to vote with Oliver.
I really like the new structure BTW, thanks again Sean for all the
work you have put into making this happen!
I've grabbed the new layout and started to make it work in Eclipse
and here is what I've found.
1) Digester has removed the RSS classes from their standard build,
so we either have to do a custom build of Digester or we have to
have version 1.5 (which is what was in the lib dir)
2) Validator does not have the ISBN validator in its current
release build (1.1.4), this class is in the 1.2 branch (which might
be head, I did not dig into it). So we have to have the latest
nightly (which is currently hosed on the apache servers at 45
bytes) or build it ourselves from their repo.
So this points to the simplicity factor that Oliver argues. In
order for us to have an auto download from ibiblio we will have to
make our code depended on one of the released versions of these
libraries. If we have the jar files in a repo (probably linked in
with svn:externals?) then we have the ability to put in a dev
version of some dependency jar.
In addition, we should probably have a way to ensure that these
dependencies on non-released versions of libraries are more
explicitly called out and I guess going to ibibilo would help us in
that regard.
Regardless of which way we go we should probably have some way of
quickly distinguishing 'dev' versions of what we are using. If we
do go back to a lib directory in subversion we should name the
validator jar with a version so that its obvious its not a released
version.
Are there further benefits to having the lib not be part of the
repo besides download/update times that I'm missing?
Thanks again Sean!
-bd-
On Jun 22, 2005, at 6:18 PM, Oliver Rossmueller wrote:
-1 on that. Please don't make the build more complex than needed. Not
any stuff that seems to be cool to implement should be implemented.
What's your problem with having the required libs in the
repository? For
me there are advantages only:
- one source fits it all: you check out the svn module and have
everything you need to build
- the libs are versioned with the code which depends on the libs
- you have everything maintained in one place, the svn repository; no
need for external jar repositories or stuff like that
- no build is blocked because the download of a required lib is not
working for whatever reason (firewalls, network failures, ...)
If you ever had the html of a http 500 page as the contents of a jar
file in your maven repository instead of the required jar itself you
know what I'm talking about. So do not try to imitate maven just by
other means but follow the KISS principle and keep it simple, please.
Oliver
Manfred Geiler wrote:
yes, looks good
+1 for automatic download of jars
-Manfred
2005/6/21, Sean Schofield <[EMAIL PROTECTED]>:
First off, thanks to James Mitchell (of the Struts team) who has
been
teaching me the wonders of svn:externals. I hope my SVN reorg will
make him proud. :-)
While James and I were discussing the Struts layout he also
mentioned
something interesting. They no longer keep any jar files in their
repository. He has figured out a way to deal with the jar file
dependencies that does *not* require Maven (ie. can be done from
Ant.)
I'm planning on doing something similar as part of the reorg.
Check
out the following steps that allow you to build struts 1.2 without
specifying a single jar file in your properties ...
$svn co https://svn.apache.org/repos/asf/struts/core/branches/
STRUTS_1_2_BRANCH/
struts-1.2
$cd struts-1.2
$ant download-dependencies release
Nice! I see no reason to deprive ourselves of the same cool build
process ;-) Also, its possible to build using local jar files
if that
is your cup of tea (just don't run the download-dependencies target
and specify the jar file locations in your local props file.)
sean
--
Oliver Rossmueller
Software Engineer and IT-Consultant
Hamburg, Germany
http://www.rossmueller.com