如何以编程方式区分以下两个
当两个值不同时,很容易知道,但是如果两个地方都配置了相同的值,如何区分?
如果我对你的理解正确并且你想 以编程方式 检查依赖版本你可以使用这样的东西
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);
}
}
}