On Dec 13, 2006, at 3:15 AM, Martin Ritchie wrote:
On 13/12/06, Steve Vinoski <[EMAIL PROTECTED]> wrote:
Hi Marnie, today you added the client/example directory, but I'm a
little puzzled by it, because I don't know what it's intended for.
One issue is that it's not part of the main build, so it will not
appear as part of any distribution. Another issue is that I don't
think it should be part of the main build -- only the sources and the
tests should be.
I'd therefore like to suggest that any samples/examples/demos be put
under the distribution directory, so they can be included in qpid
distributions, as I assume we want them to be, without requiring them
to be part of the main build. I'd be happy to move them if you like.
I don't think the examples should be part of the distribution build.
This just seems unintuitive.
How so? I presume that we provide examples not for ourselves, but for
our users. Similarly, the sole purpose of the distribution directory
is to build artifacts for our users. The examples are presumably
always packaged in the distributions as sources, even the binary
distributions, and having them under the distribution directory
facilitates that.
I would have suggested they should either
be in src/examples part of the main build
Do you really want to build the examples every time you do a build?
If so, will the examples have tests that execute in the test phase?
Will an examples jar be produced? If so, does that really make sense,
given that the main value of examples is that users can read and copy
the sources to learn how to use the system?
but then delivered to
everyone
I don't know what you mean by that.
or as they are in a separate sub-module of client. That can
be included in a distribution but can also be distributed separately.
If they're a sub-module of the client, do they build and test as part
of the client's build and test?
The distribution directory is already so full of jars that we never
had or needed pre-maven.
Those are dependencies, both direct and transitive. Maven is
determining all of that. If you feel there are too many dependencies,
then look through the pom files and get rid of any and all
dependencies that are unnecessary, or if a given dependency is used
only for testing, scope it to the test phase only.
I'd like to see us moving towards a set of
distributions that contain the minimal files required to run a broker,
a client and for development that contains everything.
Of course. I don't think anyone would advocate adding unnecessary
stuff to either the build or the distributions.
The only problem I can see currently is that if we include the
examples in the distribution then as they are not part of the main
build the distribution build will fail because it copies whatever
files are in your local repository.
This is again why I suggest that they be part of the distribution.
It's all really a multi-step process: you build the main stuff, then
you create a distribution. You install that distribution, just as a
user would, and then you build and run the examples, just as a user
would.
I don't know maven that well but
is there ANY way we can change this? Only dependencies should be
pulled from the local repository. The qpid code should be compiled
"locally" and included in the distribution.
Why? That would mean that you'd need special rules for finding qpid
artifacts in the file system, which isn't really necessary (see
below) as it would just add complexity.
I can't believe that maven forces you to only work on one "revision"
of the code base at a time.
It doesn't. If you're working on a different version, then you need
to change the version number. The trunk currently is set to version
"milestone 2 snapshot." Every time you build, you build a snapshot of
M2, and you replace in your repository any M2 snapshot that might
have existed before. That's the definition of a snapshot. Once we
decide to go for a milestone 2 release, we'll branch, and then the
trunk will move to M3 snapshot, while the release branch will be
building M2 release candidates, and ultimately will produce M2
(final). At that point, you can build both the branch and trunk, and
the artifacts produced by each build will live side-by-side without
any interference with each other.
I have a number of branches in development
and having to do a main clean and install before I can build a
distribution seems so unintuitive.
Change your version in the poms on each of your branches to reflect
that branch name or purpose. Your branches are, after all, building a
version that's different than what the trunk is building. Then the
artifacts produced by each branch can all coexist.
This issue doesn't seem to bother some on the list but I am finding it
increasingly annoying. Does anyone else share this opinion?
Obviously, I don't. :-)
--steve