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

Ska*_*rab 28 java maven-2 maven-3

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

Bre*_*ter 34

首先,我假设你还没有在Maven插件中运行,因为有更简单的方法可以通过那里的可用API来实现.

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

为此,您需要使用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 )
{
     ...
}
Run Code Online (Sandbox Code Playgroud)

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

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

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


dog*_*ane 27

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

MavenXpp3Reader reader = new MavenXpp3Reader();
Model model = reader.read(new FileReader(mypom));
Run Code Online (Sandbox Code Playgroud)