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)
你必须做两件事来运行它:
ModelBuilder包含其私有字段的实例最好的方法取决于您已经使用的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)