Лучший способ получить доступ к конфигурации во время выполнения плагина знатока от пользовательского заклинания?

И еще один, который предполагает, что символы в конце заключены в <...>, но не всегда может быть

=SUBSTITUTE(REPLACE(A1,1,FIND("(",A1),""),")","")

Обратите внимание, что эта же формула также будет работать над вашим исходным сообщением, прежде чем она будет отредактирована, и
добавлено в конце каждой строки:

15
задан Rich Seller 30 July 2009 в 21:00
поделиться

3 ответа

Используя свойства, конечно, один способ пойти, однако не идеальный. Это все еще требует, чтобы пользователь определил $ {propertyName} в нескольких местах всюду по англичанину. Я хочу позволить моему плагину работать без модификаций англичанину пользователя кроме самого сменного определения.

я не вижу доступ к свойствам времени выполнения другого Mojo как слишком плотное соединение. Если другой Mojo определяется где-нибудь в иерархии сборки, я хочу, чтобы мой Mojo уважал ту же конфигурацию.

Мое текущее решение:

private Plugin lookupPlugin(String key) {

    List plugins = getProject().getBuildPlugins();

    for (Iterator iterator = plugins.iterator(); iterator.hasNext();) {
        Plugin plugin = (Plugin) iterator.next();
        if(key.equalsIgnoreCase(plugin.getKey())) {
            return plugin;
        }
    }
    return null;
}


/**
 * Extracts nested values from the given config object into a List.
 * 
 * @param childname the name of the first subelement that contains the list
 * @param config the actual config object
 */
private List extractNestedStrings(String childname, Xpp3Dom config) {

    final Xpp3Dom subelement = config.getChild(childname);
    if (subelement != null) {
        List result = new LinkedList();
        final Xpp3Dom[] children = subelement.getChildren();
        for (int i = 0; i < children.length; i++) {
            final Xpp3Dom child = children[i];
            result.add(child.getValue());
        }
        getLog().info("Extracted strings: " + result);
        return result;
    }

    return null;
}

Это работало на несколько маленьких сборок, с которыми я протестировал. Включая сборку мультимодуля.

3
ответ дан 1 December 2019 в 05:12
поделиться

Я не уверен, как Вы сделали бы это точно, но мне кажется, что это не могло бы быть лучшим проектным решением. Если вообще возможный необходимо стремиться разъединять Mojo от каких-либо других плагинов там.

Вместо этого я рекомендовал бы использовать пользовательские свойства для факторизации любого дублирования в конфигурации отдельных плагинов.

можно установить пользовательское свойство "нечто" в англичанине при помощи раздела свойств:

<project>
  ...
  <properties>
    <foo>value</foo>
  </properties>
  ...
</project>

нечто свойства теперь доступно где угодно в англичанине при помощи знака доллара + изогнутая нотация фигурной скобки:

<somePluginProperty>${foo}</somePluginProperty>
0
ответ дан 1 December 2019 в 05:12
поделиться

Вы можете получить список подключаемых модулей, которые в настоящее время используются в сборке, используя следующие шаги:

Сначала вам нужно заставить Maven внедрить текущий проект в ваш mojo, вы используете класс переменная, определенная ниже, чтобы получить это.

/**
 * The maven project.
 * 
 * @parameter expression="${project}"
 * @readonly
 */
 private MavenProject project;

Затем вы можете использовать следующее, чтобы получить список подключаемых модулей, используемых в этой сборке.

mavenProject.getBuildPlugins()

Вы можете повторять этот список, пока не найдете подключаемый модуль, из которого вы хотите извлечь конфигурацию.

Наконец, вы можете получить конфигурацию как Xpp3Dom.

plugin.getConfiguration()

Примечание: Если вы измените конфигурацию других плагинов (а не просто извлекаете информацию), она останется измененной только для текущей фазы, а не для последующих фаз.

4
ответ дан 1 December 2019 в 05:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: