Во-первых, я предполагаю, что вы еще не работаете внутри плагина 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
, включая его частные поля
- используйте один из распознавателей Maven для поиска родительских POM или напишите свое собственное (как в приведенном выше фрагменте)
Как лучше всего это сделать, зависит от структуры DI, которую вы уже используете, или от того, хотите ли вы просто вставить контейнер Maven по умолчанию.