You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by Gordon Henriksen <go...@mac.com> on 2006/03/19 01:31:04 UTC
Potential Maven user overwhelmed - seeks voices of experience
Hello, everyone,
I'm looking to set up some new projects, and Maven looks like an
absolutely excellent tool except for one thing--I'm afraid of it. :)
There are so many plugins, so many things this system is capable of,
yet I can't even figure out a way to get a list of the goals
supported by the plugins I'm using, aside from spelunking into
their .jar files. I throw some typical Makefile targets at it and it
just does something roughly appropriate, and that's cool. But
sometimes it doesn't know what I'm talking about, and I'm not sure
how it all gets wired together so I can learn its vocabulary, and
that scares me. :)
Succinctly, Maven looks like an astoundingly powerful tool that does
70% of the legwork I'm confronted with in setting up a new source
tree and development cycle for my team. That's far more than I
expected of any single product. But I'm simply lost in it.
I'm on a truncated schedule with a lot of new technologies, so
forgive me a little bit if I'm asking a lot here, but I just want to
get pointed in the right direction on the items which I view as the
major requirements for my build and release management toolset. I'm
reviewing the mailing list, I'm looking at all the docu I can find,
but I haven't gotten the traction to make everything click in my head
yet (or even to confirm that Maven's going to be the magic bullet it
seems to be for so many problems). I should probably break this out
into several threads so that it's more digestible. C'est la vie.
1. ECLIPSE -
Where do I look for integration with the IDE? Refactoring and code
completion tools are simply too important to ignore, but Eclipse
doesn't seem nearly smart enough to pick up the entire build ball and
run with it, so it seems the IDE integration game becomes one of
pushing .classpath and so-forth files from a "real" build engine into
Eclipse, plus having Eclipse swiftly kick off builds on demand.
Ideally, automatic builds would really work, but nothing seems to
integrate tightly enough with Eclipse that this seems practical.
Also, any ability for junior developers to rely on automatic build is
very concerning, not only because it's an unofficial build engine
doing the build, but also because Eclipse isn't likely to kick off
unit tests. It also concerns me somewhat that Maven takes several
seconds to build an empty project from the command line; ant is
painfully slow enough on its own.
2. SMOOTH WEB DEV CYCLE -
I'm looking to make sure that web development is as smooth and
dynamic as possible. ASP.NET 2 is essentially what I'm looking for;
the app server has fully automatic compilation of even source files;
eliminates the need for almost all web server configuration in
preference to directory-local application configuration; and uses
fast, reliable dependency analysis and recompilation based on
filesystem change notifications. I'm very concerned that my coworkers
would be frustrated by a long build, deploy, and reload cycles,
coming as they are predominantly from a PHP background, where changes
are essentially free.
In the source tree I was setting up before discovering Maven, I was
actually placing my web applications in an "exploded EAR" format that
my application server happened to grok, then pointing the app server
directly at that. This got me free compilation of .java files, and
eliminated any "link" or "deploy" steps, but it left no room in the
source tree for files that should not contribute to the application
such as Maven/ant/make configurations, developer documentation, unit
tests, temp files, or final outputs.
3. EASY SETUP OF SANDBOX -
Maven has this solved for Java programs and libraries, and even for
single web applications, but I'm looking at web applications back-
ended by independent web services. So there's a significant potential
for arduous configuration of the application server (which needs to
know where the apps are) and web applications (which need to know
where the services are) that I want to strive to minimize.
While I'm working on killerapp 3.5 and killerservice 3.1, if a bug
crops up in killerapp 3.0.2, it's of some help if Maven lets me
swiftly check out and build killerapp 3.0.3-SNAPSHOT and its
dependency on killerservice 3.0, but if I'm still stuck reconfiguring
Eclipse, and my app server, and killerapp (to talk to the new
instance of killerservice), then I still have a major impediment.
That same impediment applies equally to: setting coworkers, and: the
addition of new services or applications, and: when performing
integration testing (be they manual or automatic).
That said, I'm not sure this is something I'm going to be able to
eliminate, but I'd love to hear any suggestions people might have.
4. UNIT TESTING -
Great, the skeleton adds this to .jar files and runs them
automatically and everything. Can I add it to a web app, too? (Note
conflict with earlier requests for fully dynamic web application
development. Realistically, it's one or the other, but I'm not sure I
can get either at this point, so I'm researching both.)
5. CONTINUOUS INTEGRATION -
Is there a product that gets along with Maven? I'd like on-demand
builds. Not really so picky, here, so long as it can check my source
code out from scratch, run the build script, build automatically on
some schedule, build on demand, and archive outputs.
I've heard lots of hype around it, but I came to the conclusion that
CruiseControl was a sad joke after actually examining it. Great, you
can turn on a lamp via X10 when the build breaks. But CC seems like a
simple solution to set up for an individual open source project, but
simply unrealistic for enterprise software. It completely omits
elements such as build promotion and subsequent integration testing.
Which leads me to…
6. BUILD PROMOTION & INTEGRATION TESTING -
Ultimately, we're writing web applications back-ended by web
services. We do not expect to redeploy the whole stable of web
services every time; each application or service will potentially be
up for independent release. So therefore, a build of an application
or service implies new integration testing against the versions it
would be *deployed* against, *not* the versions that happen to be on
trunk. My intuitive concept of this would be promoting builds into a
series of tiers:
just a build, passes developer testing
bronze build, passes QA functional & integration testing
silver build, passes systems group testing
golden build, gets released
Each promoted build would coexist with a stable of others at each
tier. Integration testing would occur across an entire tier. There
would be artifacts and limitations to that approach; basically, only
one release candidate could be under promotion at a time, but I don't
see another manageable and comprehensible model that deals with the
dependency inversion when a service is updated and integration
testing needs to be performed for all its clients. Plus, it lends
itself to corresponding test databases.
Anyhow, this doesn't seem something that Maven would get along with
directly, because of those limitations (which are fine for even a
midsize development team, but not okay for an universe of projects).
Is there any support extant for this type of testing, or is this an
area where we need to roll our own? I'd like to have continuous
integration tests run subsequent to successful builds, or to build
promotion (i.e., by the integration server, even though an
integration test is rather different from a typical project), and be
accessible to developers.
That's a lot that I'm curious about, and I realize it's counter to
standard practices for effective pleading on a mailing list to put
out so much unfocused content. So thank you to anybody who bothered
to plow through all of that and still has any suggestions to share.
TIA,
Gordon "Call me Warnock!" Henriksen
gordonhenriksen@mac.com
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org
Re: Potential Maven user overwhelmed - seeks voices of experience
Posted by Wayne Fay <wa...@gmail.com>.
> I'm on a truncated schedule with a lot of new technologies, so
This is a bad recipe for a successful first-time use of any new
technology, and Maven in particular since it is an open-source tool
and many users complain about the documentation lately.
If you have an existing build process that handles all of your
requirements, you might want to look into a parallel process with M2
so you can see how much of your build etc is possible in Maven without
actually committing to it for the entire team.
I'm just not a fan of trying something for the first time on a big
important project involving lots of people!
> 4. UNIT TESTING -
> Great, the skeleton adds this to .jar files and runs them
> automatically and everything. Can I add it to a web app, too? (Note
There's nothing stopping you from using JUnit with web apps. But I
imagine you're going to want to use something like HttpUnit or JUnitEE
or Canoo to actually test the webpages themselves (perhaps after
deploying them via Cargo), and I haven't gotten there myself yet. Nor
have I succeeded with deploying EJBs using OpenEJB or similar for ejb
testing, but I'm sure I'll get there eventually. (I have spent less
time on these issues than others.)
> 5. CONTINUOUS INTEGRATION -
> Is there a product that gets along with Maven? I'd like on-demand
Take a look at Maven's sister project, Continuum [1]. But I don't
think it will help you with promoted builds etc.
[1] http://maven.apache.org/continuum
HTH.
Wayne
Re: Potential Maven user overwhelmed - seeks voices of experience
Posted by Milos Kleint <mk...@gmail.com>.
On 3/19/06, Gordon Henriksen <go...@mac.com> wrote:
> 1. ECLIPSE -
> Where do I look for integration with the IDE? Refactoring and code
> completion tools are simply too important to ignore, but Eclipse
> doesn't seem nearly smart enough to pick up the entire build ball and
> run with it, so it seems the IDE integration game becomes one of
> pushing .classpath and so-forth files from a "real" build engine into
> Eclipse, plus having Eclipse swiftly kick off builds on demand.
> Ideally, automatic builds would really work, but nothing seems to
> integrate tightly enough with Eclipse that this seems practical.
> Also, any ability for junior developers to rely on automatic build is
> very concerning, not only because it's an unofficial build engine
> doing the build, but also because Eclipse isn't likely to kick off
> unit tests. It also concerns me somewhat that Maven takes several
> seconds to build an empty project from the command line; ant is
> painfully slow enough on its own.
it's probably only the first build that is slow. it download the
various plugins, their dependencies etc. Next build should be fairly
fast. I have cca 10 projects, with unit test (few) and a clean build
takes under 30 seconds.
milos
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org