[ 
https://issues.apache.org/jira/browse/MENFORCER-360?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17198284#comment-17198284
 ] 

Guy Veraghtert commented on MENFORCER-360:
------------------------------------------

[~rfscholte] Thank you for your response. You are mainly talking about (public) 
libraries. We are working on a large international internal project with 
different teams. Of course breaking an API should be avoided. However in 
practice, from time to time, it's not feasible to maintain backwards 
compatibility (or it would be too costly). Therefor all teams follow the rules 
of semantic versioning ([https://semver.org/|https://semver.org/).]) strictly, 
we use the proposed option to check for equal major versions in the build of 
the overarching application (where all different components of the teams come 
together) to have a final check that all components depend on compatible 
versions. (Note that also a class binary compatible change, can be breaking 
(different functional behavior)).

 

Note that spring-framework until now  was not following the rules of semantic 
versioning, they are rather bad at modularity and API management (but rather 
good at backwards compatibility). Checking spring compatibility is not the 
target of this change, we place it in the exclude tag.

 

We use this check for almost a year now, and it works very well for us. As I 
also heard of other projects doing something similar and the change is very 
small, I thought it would be a nice addition to this rule.

> requireUpperBoundDeps should have option to check for same major version
> ------------------------------------------------------------------------
>
>                 Key: MENFORCER-360
>                 URL: https://issues.apache.org/jira/browse/MENFORCER-360
>             Project: Maven Enforcer Plugin
>          Issue Type: Improvement
>          Components: Standard Rules
>    Affects Versions: 3.0.0-M3
>            Reporter: Guy Veraghtert
>            Priority: Trivial
>
> In our project we use semantic versioning for our dependencies 
> ([https://semver.org/|https://semver.org/).])
> The requireUpperBoundDeps rule already checks for compatible versions, but we 
> would like to have the option to specify that no major (i.e. breaking) 
> versions are mixed.
> So a (transitive) dependency on groupId:artifactId:1.0.0 and on 
> groupId:artifactId:2.0.0 means that we have a conflict.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to