Back to all reviewers

Centralize dependency management

deeplearning4j/deeplearning4j
Based on 10 comments
Xml

Manage dependencies at the top level using `` to ensure version consistency across modules and prevent conflicts. Define version properties in one place and reference them throughout the project:

Configurations Xml

Reviewer Prompt

Manage dependencies at the top level using <dependencyManagement> to ensure version consistency across modules and prevent conflicts. Define version properties in one place and reference them throughout the project:

<!-- In parent pom.xml -->
<properties>
    <jackson.version>2.15.0</jackson.version>
    <jmh.version>1.33</jmh.version>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>${netty.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

In module pom files, reference dependencies without version numbers:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
</dependency>

Avoid:

  • Release candidate (RC) or SNAPSHOT versions in production code
  • Downgrading library versions
  • Using generic version references like ${project.version} or ${project.parent.version}
  • Different versions of the same underlying libraries (e.g., JavaCPP)

For related but distinct libraries (like Netty 3.x vs 4.x), create separate version properties (e.g., netty3.version and netty.version) to clearly distinguish them.

10
Comments Analyzed
Xml
Primary Language
Configurations
Category

Source Discussions