关于maven jar版本号的排序

maven version sort具体算法实现:

https://raw.githubusercontent.com/apache/maven/master/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/ComparableVersion.java

https://maven.apache.org/pom.html#version-order-specification

https://maven.apache.org/pom.html#version-order-testing

查看项目中使用的版本号

mvn dependency:tree

使用插件

遇到的问题:

IDEA Project中的JDBC jar version更新了, 其他依赖这个module中的jar却不更新

尝试mvn Reimport, clean idea cache, mvn clean install都无效

https://docs.oracle.com/middleware/1212/core/MAVEN/maven_version.htm#MAVEN401

mvn最后认为1.0.9.31.0.10.2新, 因为它用字符串去比较了, 并不适用上面那个ComparableVersion.java

原因是oracle用的version号不符合maven的version标准: 最后一个点应该换成- ,即‘1.0.9-3’, 4个数字的编码规则是错误的

依赖传递的机制:https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html
修改version排序的方法:https://www.mojohaus.org/versions-maven-plugin/faq.html

解决问题

parent pom中固定版本号,
spring-boot-dependencies-2.x.pom中已经定义了一些版本号,如果自己的parent.pom又依赖sprint-boot的,就在pom.xml中覆盖spring的<properties></properties>, 不是覆盖<version>.
子module中的依赖不加<version>标签

posted @ 2022-05-11 10:52  funny_coding  阅读(218)  评论(0编辑  收藏  举报
build beautiful things, share happiness