Maven 如何避免从自冲突模块手动重新导入可传递依赖项

Maven 如何避免从自冲突模块手动重新导入可传递依赖项,maven,transitive-dependency,maven-enforcer-plugin,Maven,Transitive Dependency,Maven Enforcer Plugin,模块依赖于同一库的多个版本,依赖性不好。此库不被任何其他依赖项使用。如果我只是排除库来解决版本冲突,那么我需要在每个子模块中导入库。这既不方便又容易出错。是否可以排除特定版本?我知道exclude标记不支持版本,但可能有更改。使用设置库的版本。这可以在父pom中完成。此版本将覆盖依赖关系树中遇到的所有版本 它还将满足enforcer插件的“依赖收敛”规则 请注意,Maven总是只加载同一个库的一个版本——如果它找到不同的版本,它将使用依赖项解析机制。不过,自己解决与依赖管理之间的冲突要好得多 使

模块依赖于同一库的多个版本,依赖性不好。此库不被任何其他依赖项使用。如果我只是排除库来解决版本冲突,那么我需要在每个子模块中导入库。这既不方便又容易出错。是否可以排除特定版本?我知道exclude标记不支持版本,但可能有更改。

使用
设置库的版本。这可以在父pom中完成。此版本将覆盖依赖关系树中遇到的所有版本

它还将满足enforcer插件的“依赖收敛”规则

请注意,Maven总是只加载同一个库的一个版本——如果它找到不同的版本,它将使用依赖项解析机制。不过,自己解决与依赖管理之间的冲突要好得多

使用
设置库的版本。这可以在父pom中完成。此版本将覆盖依赖关系树中遇到的所有版本

它还将满足enforcer插件的“依赖收敛”规则


请注意,Maven总是只加载同一个库的一个版本——如果它找到不同的版本,它将使用依赖项解析机制。不过,自己解决与依赖管理之间的冲突要好得多

我在MVN3.6.0上进行了测试,但它不起作用。它没有像我预期的那样工作。仅将排除的库放入父依赖项管理部分是不够的。它应该在每个子模块中重复。所以没有来自maven的静态支持。只要运行testsavemyyou,就不需要在子模块中重复dependencyManagement。如果在父pom中执行此操作,则所有子项都将使用它。但是,子模块能够通过自己的或显式声明依赖项来覆盖DependencyManager。您可以通过
mvn dependency:tree
分析这种情况。我在mvn3.6.0上进行了测试,但它不起作用。它没有像我预期的那样工作。仅将排除的库放入父依赖项管理部分是不够的。它应该在每个子模块中重复。所以没有来自maven的静态支持。只要运行testsavemyyou,就不需要在子模块中重复dependencyManagement。如果在父pom中执行此操作,则所有子项都将使用它。但是,子模块能够通过自己的或显式声明依赖项来覆盖DependencyManager。您可以通过
mvn dependency:tree
分析情况。