使用 eclipse-resource-api 遍历 Maven 项目的依赖 jar(插件开发)
Iterate through maven project's dependency jars with eclipse-resource-api (plugin development)
我有一个 Maven 项目。我想遍历它的依赖 jar 项目并读取其中的一些 属性 文件。
使用 Eclipse 资源 api,我可以在工作区中获取一个 IProject 实例并访问其类路径文件。
Class-路径具有以下结构。
<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.Or 有没有比这更好的方法来以编程方式读取 Maven 依赖项 jar?
IJavaProject
的 getResolvedClasspath
方法处理解析容器:
IProject project = ... get project
IJavaProject javaProject = JavaCore.create(project);
IClasspathEntry[] classPathEntries = javaProject.getResolvedClasspath(true);
JavaDoc 说:
This is a helper method returning the resolved classpath for the
project as a list of simple (non-variable, non-container) classpath
entries. All classpath variable and classpath container entries in the
project's raw classpath will be replaced by the simple classpath
entries they resolve to.
我有一个 Maven 项目。我想遍历它的依赖 jar 项目并读取其中的一些 属性 文件。 使用 Eclipse 资源 api,我可以在工作区中获取一个 IProject 实例并访问其类路径文件。
Class-路径具有以下结构。
<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.Or 有没有比这更好的方法来以编程方式读取 Maven 依赖项 jar?
IJavaProject
的 getResolvedClasspath
方法处理解析容器:
IProject project = ... get project
IJavaProject javaProject = JavaCore.create(project);
IClasspathEntry[] classPathEntries = javaProject.getResolvedClasspath(true);
JavaDoc 说:
This is a helper method returning the resolved classpath for the project as a list of simple (non-variable, non-container) classpath entries. All classpath variable and classpath container entries in the project's raw classpath will be replaced by the simple classpath entries they resolve to.