【问题标题】:Maven: how to invoke a plugin with execution specific configMaven:如何调用具有执行特定配置的插件
【发布时间】:2021-11-05 14:43:15
【问题描述】:

我写了一个插件,想以不同的方式对待目标 vrs(检查版本), 取决于执行/命令行。

在我添加的代码中

   @Parameter(name = "versionsWarnOnly", defaultValue = "true")
    private boolean versionsWarnOnly;

    public boolean getVersionsWarnOnly() {
    System.out.println("invoked get");
    return this.versionsWarnOnly;
    }

    public void setVersionsWarnOnly(boolean versionsWarnOnly) {
    System.out.println("invoked set");
    this.versionsWarnOnly = versionsWarnOnly;
    }

我希望,如果没有在 pom 的配置中指定versionsWarnOnly,我只会得到指定的defaultValue。

问题是,这不会发生,在那种情况下它总是错误的。

如果我在配置中配置 pom中的插件

<versionsWarnOnly>true</versionsWarnOnly>

如果我构建了阶段mvn validate,那么这就完成了(并且取得了一些成功)。 如果我通过目标mvn latex:vrs 从命令行调用目标,甚至是正确的。

但如果我在类似的执行中指定,

      <execution>
        <id>validate_converters</id>
        <phase>validate</phase>
        <configuration>
          <versionsWarnOnly>true</versionsWarnOnly>
        </configuration>
        <goals>
              <goal>vrs</goal>
            </goals>
      </execution>

同样没有效果。 我不知道我做错了什么 或者你需要什么样的信息来帮助我。

【问题讨论】:

  • 更新:@Parameter(name = "versionsWarnOnly", defaultValue = "xxx") private String versionsWarnOnly = "yyy"; 显示 defaultValue 不起作用,但直接赋值起作用。
  • 注入不是通过 setter/getter 完成的...所以最好使用execute() 方法并打印出那里的值...除了没有完整代码的情况外,很难看是否/在哪里一个问题可能是......
  • @khmarbaise.. 确实是一个不错的博客...好吧,我在执行时做了一些打印输出。这就是我收到结果的方式。但是你所说的“注入不是通过 getter/setter 完成的”是什么意思?
  • getter和setter不用于参数注入...通过属性注入完成...

标签: maven plugins


【解决方案1】:

问题已解决,可以完全删除问题。 问题是我把几乎所有的配置都放到了一个类 Settings 中。 另一方面,我在外面添加了新参数,所以它没有效果。 就这样。 现在一切正常。

【讨论】:

    猜你喜欢
    • 2023-03-12
    • 2020-12-27
    • 2012-04-15
    • 2011-03-06
    • 2013-01-06
    • 2011-03-27
    • 2016-02-27
    • 1970-01-01
    • 2018-03-15
    相关资源
    最近更新 更多