gpt4 book ai didi

java - Maven - 在运行时查找依赖项

转载 作者:搜寻专家 更新时间:2023-11-01 03:30:22 25 4
gpt4 key购买 nike

我希望能够确定我在运行时运行的依赖项的版本以及 Web 应用程序本身的版本。

我部署的每个 Web 应用程序都打包有一个 pom.xml,我可以从中读取它,这部分很简单。下一部分是毫不费力地解析 pom。

当 Web 应用程序运行时,我希望能够了解我的版本以及我的依赖项的版本。

理想情况下,我想做这样的事情:

MavenPom pom = new MavenPom(webApplicationPomInputStream);
pom.getVersion();
pom.getArtifactId();
pom.getGroupId();

for(Dependency dependency:pom.getDependencies())
{
dependency.getVersion();
dependency.getArtifactId();
dependency.getGroupId();
}

我应该在这里只使用 XPath 表示法,还是有我可以调用的库来做这种事情?

在这些帖子之后,我认为最快/最可靠的方法是生成一个包含依赖关系树的文本文件:mvn dependency:tree。然后我会解析文本文件,将groupId、artifactId和version分开,然后根据缩进级别确定结构。

如果这样做,我可以导出为 XML 而不是文本吗?然后,我可以使用 JAXB 轻松解析该文件,而无需执行任何/大量工作。

这是一个 hack,但看起来很有前途。

沃尔特

最佳答案

我将只使用 mvn dependency:tree 插件来生成一个包含依赖树的文本文件。然后我将解析它并从中创建依赖树/图。我将获取工件的范围、groupId、artifactId、版本及其父级。

我成功地实现了这种类型的查找,它只是获取依赖项输出,对其进行解析并使用缩进组织依赖项,没什么特别的。工件、组、版本和范围很容易解析,因为分隔符是 :。

沃尔特

关于java - Maven - 在运行时查找依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1977979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com