我想在Java代码中读取pom.xml文件。我想知道是否有相应的库,以便我可以为不同的部分(例如依赖项、插件等)获取迭代器。我希望避免手工构建解析器。
MavenXpp3Reader reader = new MavenXpp3Reader();
Model model = reader.read(new FileReader(mypom));
首先,我假设您当前不在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 )
{
...
}
要运行它,您需要执行两个操作:
ModelBuilder
实例如何最好地完成这两个步骤取决于您已经使用的DI框架,或者您是否只想嵌入Maven的默认容器。