gpt4 book ai didi

java - Maven 插件可以自动从 "configuration"部分看到 "execution"标签吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:01:17 26 4
gpt4 key购买 nike

我正在分析一个可以在 configuration 中配置的 Maven 插件节plugin :

<plugin>
...
<executions>...</executions>
<configuration>
<!-- items placed here are visible to the MOJO -->
</configuration>
</plugin>

插件完全忽略 execution 的任何配置项, 虽然:

<plugin>
...
<executions>
<execution>
<id>execution1</id>
<phase>test</phase>
<goals><goal>test</goal></goals>
<configuration>
<!-- items placed here are ignored -->
</configuration>
</execution>
</executions>
</plugin>

我用 mvn test 运行 Maven .我确信执行会发生,因为 Maven 会打印其 id正确,但插件未配置 -- 打印有关不正确设置的警告,这些设置在 <configuration> 时不存在部分已移出 <executions> .

问题:插件的实现方式是否只接受“顶级”配置?我研究了它的源代码,在我看来,它是 Maven 在 MOJO 类上调用 setter 并且它对选项来自哪个部分的插件是透明的。

MOJO 注释为:

* @component
* @goal test
* @phase test
* @execute phase="jasmine-process-test-resources"

最佳答案

有问题的插件正在 fork 自定义生命周期。

fork 的自定义生命周期将删除具有指定 ID ( execution1) 的执行(因为它是 fork 的生命周期)

因此,由 fork 生命周期执行的任何插件目标都将丢失其配置。主要的 mojo 本身应该获取配置,但出了问题的是 fork 的生命周期执行。

我猜是哪个插件,如果我猜对了,这就是custom lifecycle并且您看到的警告来自例如other mojos文字如

JavaScript source folder was expected but was not found. Set configuration property
`jsSrcDir` to the directory containing your JavaScript sources. Skipping
jasmine:resources processing.

在这种情况下,您需要将 <configuration>外部 block 中的部分或配置生命周期的执行。

配置生命周期的执行将需要使用 id 添加执行s 是魔法格式。我不是 100% 确定,但在您的情况下,您将使用 id 定义额外的执行default-resources 之一的 s或 jasmine-lifecycle-resources以确保配置成功。

不太冗长的方法是将配置放在外部部分并完成。

关于java - Maven 插件可以自动从 "configuration"部分看到 "execution"标签吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14572632/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com