Scenario: the system has several components, each of which has its own POM. There are several long chains of dependencies (A depends on B depends on C, etc.). I want every non-developer-desktop assembly to be a potential release candidate - if it passes QA, we will deploy it without rebuilding. In other words, I never want to create SNAPSHOT versions as part of my regularly scheduled builds, only versions like 1.3.0.5, 1.3.0.6, etc. I also want developers to work with several components at once.
To prevent some of the expected suggestions: Maven Release Plugin does not help me ... unless there is some magical way for my dependency versions to not be SNAPSHOT in the POM, but still allow developers to work on more than one component at a time?
How should we manage project versions and dependencies in all of our POMs? Now it’s just SNAPSHOTs everywhere, which makes things simple for developers (they start with SNAPSHOT and never touch anything else). But this worries about deployment time (builds with SNAPSHOT dependencies are not well-defined and not reproducible).
I would like to avoid excessive juggling during the build, but right now I see no way around it.
<L> Let's say I have components, libj, libk, APP and UI, with dependencies as follows: libj → util (libj depends on the utility) libk → util APP → libj UI → libj, libk for>I have development teams working on APP and UI, and sometimes they will need to make changes / additions to some of the dependencies (even use) to ensure their current work. What should the tested versions of POM and dependencies for each component look like?
Edit: I updated the title to refer to Maven 2 instead of 2.0, as it became obvious that I would need to work with 2.1 or better in order to best solve this problem.
source
share