Чтение ПОМ со своими детьми - PullRequest
2 голосов
/ 18 мая 2010

На основании сообщения упомянуто (Бреттом Портером), что можно прочитать POM Что мне нужно, это прочитать не только один пом. Мне нужно прочитать все дерево пом в многомодульной сборке. Начиная с корневого пома, и он должен автоматически читать дочерний пом, если это возможно? Мне нужно сделать это в отдельном Java-коде, не связанном с самим Maven.

Ответы [ 2 ]

2 голосов
/ 18 мая 2010

Я упоминаю, что вы хотите сделать это без Maven. Попытка сделать это без какой-либо опоры на maven или, в частности, на библиотеки maven, такие как maven-model, maven-project-builder, потребует много переосмысления уже существующего кода. Вы можете читать POM и извлекать из них данные, не выполняя полную сборку maven.

Исходный код Artifactory имеет несколько полезных указателей, например, использование

MavenXpp3Reader reader = new MavenXpp3Reader();
Model model = reader.read(new InputStreamReader(in, "utf-8"));

Прочитать в помпоне мавена и получить модель. Модель имеет метод addModule и getModules (). Вы можете использовать это для определения местоположения дочерних poms относительно текущего родительского pom.

1 голос
/ 18 мая 2010

Возможно, это небольшой обман, но, возможно, вы могли бы вызвать mvn help:effective-pom на родительском pom через Runtime.exec (http://java.sun.com/javase/6/docs/api/java/lang/Runtime.html#exec%28java.lang.String%29),, который даст вам файл pom-конгломерата pom-объекта, на который вы его вызвали в сочетании с его родителями и модулями. Это даст вам один файл pom для работы и избавит вас от необходимости обнаруживать модули / родителей самостоятельно.

Я недостаточно знаком с самими библиотеками maven, чтобы знать, как создать эффективный pom-файл без запуска maven в другом процессе, хотя я не могу представить, что это невозможно. Если у меня будет возможность посмотреть, я сделаю это и соответствующим образом отредактирую свой ответ.

[Изменить]

Вот ссылка на исходный код EffectivePomMojo, который показывает, как help :ffective-pom генерирует этот xml: http://svn.apache.org/viewvc/maven/plugins/tags/maven-help-plugin-2.1.1/src/main/java/org/apache/maven/plugins/help/EffectivePomMojo.java?view=markup. Надеюсь, это поможет ... хотя я не знаю, как этот mojo получает свой MavenProject объект или список объектов MavenProject, которые имеют частную область видимости.

...