Peter A. Pilgrim wrote:
Ted Husted wrote:

On Tue, 23 Mar 2004 10:07:55 +0000, Peter A. Pilgrim wrote:

In my experienc multiple CVS repositories can make a project much
harder to manage. But are we singing from the same hymn sheet? Is a
"multiple repository" equal ( or not equal) to a CVS module?



We mean multiple CVS modules. The original idea being each module would generate a jar. Product==JAR==Module==unit-of-release.
One list of potential products -- each with its own JAR, module, and release cycle -- would be:
* core (including tiles and validator)
* examples
* site
* whiteboard (or "sandbox")


* opt-taglib
* opt-el
* opt-faces

aka "the seven dwarfs" :)


Now it clearer.


Well this is how Expresso CVS is laid out and an old investment bank
project  which I was involved in a couple years ago was laid out like
that as well.

I guess the hard part of copying jar and build a web app from CVS
modules have already been discussed. Still it is the only way to
go if you want to Struts to be modular. So +1 from me.


Let me clarify my own post ( grabbing GNU Emacs and picture-mode ). The way it is organised under the current CVS module is `src' for Java source and `web' file. So you could live with this structure.

1) I think you should keep the same elementary structure

Case#1

CVS Repository
    |
    + core (including tiles and validator)
    |  |
    |  +---web
    |  +---src
    |
    + examples
    |  |
    |  +---web
    |  +---src
    |
    + site
    |  |
    |  +---web
    |  +---src
    |
    + whiteboard (or "sandbox")
    |  |
    ...
    + opt-taglib
    |  |
    ...
    + opt-el
    |  |
    ...
    + opt-faces

2) Or you can remove all the `web' stuff and merge under one `web' (public_html)
module. But I have never liked this idea as a workable solution. I seen it once
long ago and I hated it then and now.

Case#2

CVS Repository
    |
    +--web
    |  |
    |  +-- examples
    |  +-- core
    |  +-- ...
    |
    + core (including tiles and validator)
    |  |
    |  +---src
    |
    + examples
    |  |
    |  +---src
    |
    + site
    |  |
    |  +---src
    |
    + whiteboard (or "sandbox")
    |  |
    ...
    + opt-taglib
    |  |
    ...
    + opt-el
    |  |
    ...
    + opt-faces

In any case in order to build a single WAR or EAR, can be quite hard on the
ANT XML build file. There is a lot of possible copying of files, JARing,
and/or JARing involved in order to build a release. In my limited
architectural experience you only need to get the initial build right once,
then you can forget about it, as long as other people developers understand
what is going on.

1) Developers have to understand the project directory structure and
standards in order to not to step on each other shoes.

e.g In order to build a WAR of all modules that runs out of the box,
you cannot have two different sub project developers, say from
`examples' and `site', each with a CVS file called

<CVS-MODULE>/web/some/foobar/acme.jsp.

Conflict of interest on files.

The same applies to source code and resources as well. Top level package
names must be agreed well in advanced. Of the course the current mapping

<CVS-MODULE>/src/shared/org/apache/struts/**

can be simplified to:

<CVS-MODULE>/src/org/apache/struts/**

in the new modular structure.

2) Organise fragments that are included into a larger configuration files.

e.g Each sub project may have TLD files, Properties files, i18n resources,
or Servlet Mappings and Servlet Paths that are merged into a final file.
Servlet mapping fragments are inserted into the final web.xml file.
Same goes for any Servlet filters.

NB: This is similar to using XML includes notation in order build a giant
`struts-config.xml', which shared by a large development team. I am
not sure if you need to do this as committers. Only I mention it if
you need to build a Struts Adventure Petstore demonstration
example in the far off future. Will properties file probably have to
merge them with ANT core tasks or some custom made build tool.

3) Agree to keep to a convention document so that the mythical `master'
build.xml does not blow up into smitherings.

4) Some one has to write standards & conventions document so that everybody
knows what time it is, and plays in a solid team.

5) Another other business obviously include JUnit, Struts documentation,
javadoc etc etc

It is starting resemble a big project with more 10+ developers working across
CVS modules. Having said all that I wish you great bundle of luck.

Regards
--
Peter Pilgrim
           __ _____ _____ _____
          / //__  // ___// ___/   +  Serverside Java
         / /___/ // /__ / /__     +  Struts
        / // ___// ___// ___/     +  Expresso Committer
     __/ // /__ / /__ / /__       +  Independent Contractor
    /___//____//____//____/       +  Intrinsic Motivation
On Line Resume
   ||
   \\===>  `` http://www.xenonsoft.demon.co.uk/no-it-striker.html ''

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to