Как вы можете связать / сшить плагины Maven? - PullRequest
0 голосов
/ 09 октября 2018

Я хочу связать два плагина Maven, которые должны выполняться последовательно.Выход первого плагина должен использоваться как вход для второго плагина.Позвольте мне объяснить:

  • Я хочу написать плагин, который генерирует ресурсы и источники, такие как файлы конфигурации, классы Java, ... Давайте назовем этот плагин generator-plugin.
  • Этот плагин нуждается во входной информации для генерации всего этого.Эта информация может быть получена из файловой системы или из базы данных SQL.Возможно, в будущем можно будет ввести несколько других источников ввода.Моя идея состоит в том, чтобы написать два плагина, один для получения всей информации из файловой системы, а другой из базы данных SQL.

Это дает:

information-plugin-file ---\
                           |--- generator-plugin
information-plugin-sql  ---/

Как это можно сделатьс мавеном?Можете ли вы цепочки плагинов?Я знаком с написанием основных Mojo, но не знаю, как к этому подойти, отсюда и этот вопрос.

Одна из возможностей - вывести в стандартизированный файл в information-plugin-file / information-plugin-sql и позволить последующим generator-plugin плагин, читаемый из того же файла (способ работы Unix, все является файлом ).

Но я ищу более прямые, специфичные для Maven подходы для этого.Существуют ли такие подходы?

Что касается порядка выполнения, все плагины будут работать в фазах generate-sources и будут определены в правильном порядке в разделе <plugins>.Так что это уже покрыто, я думаю.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

AFAIK, плагины в Maven спроектированы как полностью независимые, поэтому могут использоваться следующие методы обмена информацией:

Обмен через свойства maven:

Возможно установить свойство в первом плагине, и, вероятно, оно будет доступно из второго плагина

import org.apache.maven.project.MavenProject;
// now inject it into your mojo of the first plugin 
@Parameter(defaultValue = "${project}")
private MavenProject project;

// Inside the "execute" method:
project.getProperties().setProperty("mySampleProperty", <SOME_VALUE_GOES_HERE>);

Обмен через файлы

Первый плагин можетсоздать некоторый выходной файл в папке 'target' И второй плагин может прочитать этот файл

Написать плагин "wrapping", который выполняет другие плагины (например, первый и второй плагин).В конце концов, все mojos - это просто java-код, который можно вызывать из плагина-агрегатора

. Вы можете найти Здесь Подробнее об этом методе

0 голосов
/ 09 октября 2018

Я считаю, что единственный способ заказать что-то в Maven - это через жизненные циклы .Ваш первый плагин (для входной информации) может работать в фазе generate-sources, а второй - в фазе process-sources.

...