получить параметры mojo в плагине maven - PullRequest
0 голосов
/ 12 июня 2018

Есть ли способ получить доступ к свойствам плагинов в методе выполнения?

У меня есть базовый mojo, у которого есть некоторые свойства, например:

@Parameter(defaultValue = "DEV", property = "dbEnvironment", required = true)
protected Environment dbEnvironment;

@Parameter(defaultValue = "true", property = "validate")
protected boolean validate;

Затем дочерний mojo добавляетнекоторые дополнительные свойства.Я хотел бы иметь возможность прочитать все эти свойства, проверить их, но не совсем понятно, как это сделать.Когда я запускаю его с отладкой, я вижу это:

[DEBUG] Configuring mojo 'com.company.tools:something-maven-plugin:0.2.11-SNAPSHOT:export-job' with basic configurator -->
[DEBUG]   (f) dbEnvironment = DEV
[DEBUG]   (f) jobName = scrape_extract
[DEBUG]   (f) project = MavenProject: com.company.tools:something-maven-plugin-it:1.0-SNAPSHOT @ /Users/selliott/intellij-workspace/tools-something-maven-plugin/something-maven-plugin/src/it/simple-it/pom.xml
[DEBUG]   (f) session = org.apache.maven.execution.MavenSession@3fd2322d
[DEBUG]   (f) validate = true
[DEBUG] -- end configuration --

Итак, похоже, что эти реквизиты где-то, но где?Я пытался получить их из сессии, session.settings, session.request безрезультатно.

1 Ответ

0 голосов
/ 14 июня 2018

Хорошо, после большой отладки я смог выяснить это на основе того, как работает AbstractConfigurationConverter, в частности, метода fromExpression.

Чтобы получить свойства, вам нужно добавить следующее к вашему mojo:

@Parameter(defaultValue = "${session}")
protected MavenSession session;

@Parameter(defaultValue = "${mojoExecution}")
protected MojoExecution mojoExecution;

Теперь вы можете создать оценщик и конфигурацию (возможно, вы можете ввести их напрямую, яЯ не уверен), и с этим вы можете сделать это:

    PluginParameterExpressionEvaluator expressionEvaluator = new PluginParameterExpressionEvaluator(session, mojoExecution);
    PlexusConfiguration pomConfiguration = new XmlPlexusConfiguration(mojoExecution.getConfiguration());

    for (PlexusConfiguration plexusConfiguration : pomConfiguration.getChildren()) {
        String value = plexusConfiguration.getValue();
        String defaultValue = plexusConfiguration.getAttribute("default-value");
        try {
            String evaluated = defaultIfNull(expressionEvaluator.evaluate(defaultIfBlank(value, defaultValue)), "").toString();
            System.out.println(plexusConfiguration.getName() + " -> " + defaultIfBlank(evaluated, defaultValue));
        } catch (ExpressionEvaluationException e) {
            e.printStackTrace();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...