java - 使用eclipse-resource-api(插件开发)遍历maven项目的依赖jar
问题描述
我有一个 Maven 项目。我想遍历它的依赖 jar 项目并读取其中的一些属性文件。使用 eclipse 资源 api,我可以在工作区中获取 IProject 实例并访问其类路径文件。
类路径具有以下结构。
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.nondependency" value=""/>
</attributes>
</classpathentry>
我如何从中提取实际的依赖 jar 位置?
我期待这样的事情
<classpath>
<classpathentry kind="var" path="M2_REPO/apache-xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar"/>
<classpathentry kind="var" path="M2_REPO/apache-xerces/xml-apis/2.9.1/xml-apis-2.9.1.jar"/>
</classpath>
2.或者有没有比这更好的方法来以编程方式读取maven依赖jar?
解决方案
处理解析容器的getResolvedClasspath
方法:IJavaProject
IProject project = ... get project
IJavaProject javaProject = JavaCore.create(project);
IClasspathEntry[] classPathEntries = javaProject.getResolvedClasspath(true);
JavaDoc 说:
这是一个帮助方法,将项目的已解析类路径作为简单(非变量、非容器)类路径条目的列表返回。项目的原始类路径中的所有类路径变量和类路径容器条目将被它们解析为的简单类路径条目替换。
推荐阅读
- python - 压缩多个列表会导致 python 2.7 中的性能问题吗?
- c - 由于内存未释放,LWIP 在一段时间后挂起
- python - 如何在同一张图上绘制来自不同模型的多条学习曲线?
- regex - 如何使用正则表达式提取器从响应标头中提取元素
- mysql - 如何在另一台主机上将 kafka 与 MySQL 连接?
- c++ - 将数组传递给函数的大小控制
- java - java - 如何修复Java maven项目中的“目标org.owasp:dependency-check-maven:4.0.2:聚合失败。:NullPointerException的执行默认值”?
- javascript - 在 Vuejs 中观察 window.scrollY 的变化
- mysql - 如何选择类似于字符串前 n 个字符的标题?
- c# - missing_index_[number] 来自哪里