You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by Thomas Broyer <t....@ltgt.net> on 2012/05/22 14:20:48 UTC

Best practice wrt. `mvn install`, multi-module projects, and running one submodule

Hi,

This is a repost from a StackOverflow question:
http://stackoverflow.com/q/10686682/116472

I tend to avoid using `mvn install` in my multi-module projects
because I feel like I then don't know which exact version of a
submodule is then used when building / launching other submodules
(particularly when switching between branches very often).
I tend to use `mvn package` a lot and then `mvn verify`.

I'm now facing the issue in [a FOSS project][1] (a Maven archetype
moreover) where I'd like to use Maven's _best practices_.
It's a multi-module project with a webapp submodule depending on the
other modules, and what worries me is the _ease of development_ along
with `mvn jetty:run` (or `jetty:start`).

Currently, I defined 2 profiles:

1. `prod`, the default one, declares dependencies on the other submodules;
2. `dev` on the other hand does **not** depend on the other modules,
and configures the `jetty-maven-plugin` by adding the other modules'
output directories as `extraClasspath` and `resourcesAsCSV`.
That way, I can `mvn package` once and then `cd webapp && mvn
jetty:start -Pdev` and quickly iterate, reloading the webapp without
the need to even stop the server.

AFAICT, `extraClasspath` was added for that exact purpose ([JETTY-1206][2]).
I've been pointed at the `tomcat7-maven-plugin` which can resolve
modules from the reactor build when using Maven 3 (and I raised an
issue to bring the same to Jetty: [JETTY-1517][3]), but that hardly
solve my

If I hadn't removed the dependency on the other submodules from the
`dev` profile, I'd have had to do an `mvn install` first so that
validating the POM doesn't fail, even if `jetty:start` doesn't use
those dependencies afterwards.

So here's my question: is `mvn install` really that common? or is my
approach of putting the intra-reactor dependencies only in the `prod`
profile OK?

(note that I have the exact same problem with the `gwt-maven-plugin`,
so please don't tell me to simply switch to Tomcat; that wouldn't even
work actually, details [here][4])

NOTE: I'm looking for a _best practice_, not only a pragmatic solution.
I don't quite like my current approach, but I'm not comfortable
installing half-baked things in my local repo. But maybe it's just me
and `mvn install` is the way Maven is/was thought out? (and leaning to
resolving from the reactor build in Maven 3, but that requires plugins
to update)


  [1]: https://github.com/tbroyer/gwt-maven-archetypes
  [2]: http://jira.codehaus.org/browse/JETTY-1206
  [3]: http://jira.codehaus.org/browse/JETTY-1517
  [4]: https://github.com/tbroyer/gwt-maven-archetypes/pull/13#issuecomment-5809904

-- 
Thomas Broyer
/tɔ.ma.bʁwa.je/

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org