Maven 依赖管理 vs 依赖

问题描述 投票:0回答:1

如何以编程方式区分以下两个

  • dependencyManagement部分配置的版本
  • 在依赖项部分配置的版本。

当两个值不同时,很容易知道,但是如果两个地方都配置了相同的值,如何区分?

java maven dependency-management
1个回答
0
投票

如果我对你的理解正确并且你想 以编程方式 检查依赖版本你可以使用这样的东西

dependency - 你想要测试的依赖性

target - 这是您要比较依赖项的 pom.xml 文件

root - 这是根 pom.xml,通常包含 dependencyManagement 部分

public class Main {
    public static void main(String[] args) {

        Dependency dependency = targetDep("org.springdoc", "springdoc-openapi-starter-webmvc-ui", "2.0.4");
        MavenProject target = myMaven("path to your target pom");
        MavenProject root = myMaven("path to your root pom");

        System.out.println(check(target, root, dependency));
    }

    public static boolean check(MavenProject target, MavenProject root, Dependency dependency) {
        String version = target.getDependencies().stream()
                .filter(dep -> dep.getArtifactId().equals(dependency.getArtifactId()))
                .findFirst()
                .map(Dependency::getVersion)
                .orElse(null);

        String managed = root.getDependencyManagement().getDependencies().stream()
                .filter(dep -> dep.getArtifactId().equals(dependency.getArtifactId()))
                .findFirst()
                .map(Dependency::getVersion)
                .orElse(null);

        return version.equals(managed);
    }

    public static Dependency targetDep(String groupId, String artifactId, String version) {
        Dependency dependency = new Dependency();
        dependency.setGroupId(groupId);
        dependency.setArtifactId(artifactId);
        dependency.setVersion(version);
        return dependency;
    }

    public static MavenProject myMaven(String pomPath) {
        FileInputStream pomStream;
        try {
            pomStream = new FileInputStream(pomPath);
            MavenXpp3Reader reader = new MavenXpp3Reader();
            Model model = reader.read(pomStream);
            return new MavenProject(model);
        } catch (XmlPullParserException | IOException e) {
            throw new RuntimeException(e);
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.