Hi community,
I am interested in your strategy, how to use Maven to make sure, all
artifacts are selected in the right version.
By default, if you add a dependency with it's version, that is only a
wish. Maven is allowed to change the artifact to a newer or an older
version. It depends on the dependency tree and the distance to the root.
(see:
http://www.sonatype.com/books/mvnref-book/reference/pom-relationships-sect-project-dependencies.html#pom-relationships-sect-version-ranges)
As a consequence, sometimes my war file contains libs which do not fit
together. The following solutions I've figured out so far:
1.Declare all needed dependencies in the pom of the war file.
Disadvantage: I have to do the work manually.
2.Use Dependency Management. In my parent pom I can declare all
dependencies and their versions. Advantage: I have full control of the
dependencies in the child moduls. Disadvantage: If I need to change a
version of a particular dependency, I need to release a new version of
the parent pom and afterwards I have to update the version number in all
child projects which need the new version of the dependency.
3.Use Version Ranges. Advantage: With version ranges I can add more
specific informations for Maven. This is used to support the conflict
resolution and maven only selects artifacts which satisfy all version
ranges. Advantage: conflict resolution does not cause (binary)
incompatibilty between the artifacts, if the version ranges are set
correct. Disadvantage: There is more effort during the release process:
you need to build a release pom with resolved version ranges to make the
build repeatable. You have to hide Snapshots during the release process,
if you use boundaries like [4.0,). And finally, maven needs additional
meta data from the repository. If the meta data are not up to date,
strange behaviour can happen.
4.Use only snapshots. If I use only snapshot versions, the latest
version is always used. Disadvantage: Developing against snapshots can
be frustrating because of the nature of snapshots ;-) But you will find
out very fast, if something is binary incompatible.
So, I am very interested in the best practise! How do you solve the
problem to manage all dependencies in their correct version. Thank you
for your suggestions in advance.
Mario
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]