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

标签 java maven-2

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

相关文章:

java - Lucee Java CPU 使用率突然升高

java - 使用 Maven 下载 Spring 3.0.0 依赖项

command-line - Maven : How to activate inactive proxies via command line?

java - 用maven构建可执行jar?

java - 未找到 JNDI Ldap 类

java - Spring Boot 宽松绑定(bind)不起作用

java - 只有一台主机的 Redis 哨兵

java - 如何使 JSpinner 对象的全部内容突出显示,以便在获得焦点时用户输入不需要删除?

java - 即使 xpath 正确也无法找到元素

maven-2 - 有没有免费的在线 Maven 存储库?