Loïc
Loïc

Reputation: 98

Maven: benefit of specifying dependencies's versions as properties for single module project

On various projects I've been working on, I've seen diferent ways of specifying dependencies versions. On some projects, the package version is written on the same dependency declaration:

    <dependency>
        <groupId>org.apache.myfaces.extensions.validator.validation-modules</groupId>
        <artifactId>myfaces-extval-property-validation</artifactId>
        <version>2.0.7</version>
        <scope>compile</scope>
    </dependency>

On others, a property is used, as in:

    <dependency>
        <groupId>org.apache.myfaces.extensions.validator.validation-modules</groupId>
        <artifactId>myfaces-extval-property-validation</artifactId>
        <version>${versions.extval}</version>
        <scope>compile</scope>
    </dependency>

For multimodule projects, I can see a clear benefit in declaring versions on the parent pom to avoid duplication (and the potential confusion and errors that come with it), but on single module applications, would there be a benefit to use such a level of indirection?

What would be a best practice for this and why?

Thanks a lot :)

Upvotes: 1

Views: 415

Answers (1)

Niels Bech Nielsen
Niels Bech Nielsen

Reputation: 4859

With a version property you can override it on the command line whereas with a fixed version you cannot.

So you can recompile your project with a newer version just by specifying it on the command line.

mvn -Dversions.extval=2.0.8 clean package

Or something.

apart from that, mostly used on multi-projects, and although there you have the dependency management section as well for versions.

Upvotes: 1

Related Questions