Problem
Large multi-module project lacks a BOM module for centralized dependency version management.
Impact
- Severity: LOW-MEDIUM
- Category: Developer Experience
- Users must manually specify versions for all modules
- Increases risk of version conflicts
- More verbose pom.xml in consuming projects
Current State
Users must do this:
<dependencies>
<dependency>
<groupId>org.flossware.jplatform</groupId>
<artifactId>platform-java-api</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.flossware.jplatform</groupId>
<artifactId>platform-java-core</artifactId>
<version>1.1</version>
</dependency>
<!-- Repeat for every module... -->
</dependencies>
Proposed Solution
Create jplatform-bom module:
<project>
<groupId>org.flossware.jplatform</groupId>
<artifactId>jplatform-bom</artifactId>
<version>1.1</version>
<packaging>pom</packaging>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.flossware.jplatform</groupId>
<artifactId>platform-java-api</artifactId>
<version>${project.version}</version>
</dependency>
<!-- All platform-java modules here -->
</dependencies>
</dependencyManagement>
</project>
User Experience
With BOM, users do this:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.flossware.jplatform</groupId>
<artifactId>jplatform-bom</artifactId>
<version>1.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.flossware.jplatform</groupId>
<artifactId>platform-java-api</artifactId>
<!-- No version needed! -->
</dependency>
<dependency>
<groupId>org.flossware.jplatform</groupId>
<artifactId>platform-java-core</artifactId>
<!-- No version needed! -->
</dependency>
</dependencies>
Examples
Similar to:
- Spring BOM:
spring-boot-dependencies
- Jackson BOM:
jackson-bom
- AWS SDK BOM:
bom
Priority
P2 - Medium - Nice to have for v1.2, should have for v1.3.
Related
Problem
Large multi-module project lacks a BOM module for centralized dependency version management.
Impact
Current State
Users must do this:
Proposed Solution
Create
jplatform-bommodule:User Experience
With BOM, users do this:
Examples
Similar to:
spring-boot-dependenciesjackson-bombomPriority
P2 - Medium - Nice to have for v1.2, should have for v1.3.
Related