我希望能够确定我在运行时运行的依赖项的版本以及 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/