是否有用于阅读maven2 / 3 pom xml文件的库?

我想在Java代码中读取一个pom.xml。 我想知道是否有一个库,所以我可以为不同的部分设置一个迭代器,例如dependenes,plugins等。我想避免手工构建解析器。

您可以尝试MavenXpp3Reader ,它是maven-model的一部分。 示例代码:

MavenXpp3Reader reader = new MavenXpp3Reader(); Model model = reader.read(new FileReader(mypom)); 

首先,我假设您尚未在Maven插件中运行,因为有更简单的方法可以通过可用的API实现这一点。

MavenXpp3Reader发布的MavenXpp3Reader解决方案将允许您轻松读取POM,但不考虑父项的inheritance和表达式的插值。

为此,您需要使用ModelBuilder类。

使用这个很简单,例如Archiva就是这个代码片段:

 ModelBuildingRequest req = new DefaultModelBuildingRequest(); req.setProcessPlugins( false ); req.setPomFile( file ); req.setModelResolver( new RepositoryModelResolver( basedir, pathTranslator ) ); req.setValidationLevel( ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL ); Model model; try { model = builder.build( req ).getEffectiveModel(); } catch ( ModelBuildingException e ) { ... } 

你必须做两件事来运行它:

  1. 实例化并连接ModelBuilder的实例,包括其私有字段
  2. 使用Maven的一个解析器来查找父POM,或编写自己的(如上面的代码片段中的情况)

最好的方法取决于您已经使用的DI框架,或者您是否只想嵌入Maven的默认容器。

这取决于你想要达到的目标。 如果您只想将其视为带有嵌入式XML文件的XML,请使用已提供的建议。

如果您希望在应用程序中实现某种forms的Mavenfunction,可以尝试新的以太库。 我没有使用它,但它看起来很简单,可以集成,并且应该只需要很少的努力就可以提供Mavenfunction。

顺便说一句,这个库是一个Maven 3 lib,而不是Maven 2(在你的标签中指定)。 不知道这对你有多大影响