5. Use released versions if possible and resolve conflicts one by one. Antonio
2010/9/24 Mario Wirth <[email protected]>: > 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] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
