[英]Can a Maven plugin see the “configuration” tag from an “execution” section automatically?
我正在分析一個 Maven 插件,我可以在plugin
的configuration
部分中configuration
:
<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"
有問題的插件正在分叉自定義生命周期。
分叉的自定義生命周期將刪除具有指定 id ( execution1
) 的execution1
(因為它是分叉的生命周期)
因此,由分叉生命周期執行的任何插件目標都將丟失其配置。 主要的 mojo 本身應該得到配置,但出了問題的是分叉的生命周期執行。
我猜它是哪個插件,如果我猜對了,這是自定義生命周期,您看到的警告來自例如其他帶有文本的mojo
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>
部分放在外部塊中或配置生命周期的執行。
配置生命周期的執行將需要添加具有魔術格式的id
的執行。 我不是 100% 確定,但在您的情況下,您將使用default-resources
或jasmine-lifecycle-resources
的id
定義附加執行,以確保配置需要。
不那么冗長的方法是將配置放在外部部分並完成它。
我在使用maven:3.6.3-jdk-8
docker 映像的基礎maven-install-plugin:2.5.2
遇到了這個問題。
感謝接受的答案讓我走上正確的軌道。
我不完全理解文檔中的這個注釋(在本節的末尾),但似乎你可以給階段目標一個執行 id 強制它使用你的配置:
注意:元素內部的配置過去與外部的配置不同,因為它們不能從直接命令行調用中使用,因為它們僅在它們綁定到的生命周期階段被調用時應用。 因此,您必須將配置部分移到執行部分之外,以將其全局應用於插件的所有調用。 從 Maven 3.3.1 開始,情況不再如此,因為您可以在命令行上指定直接插件目標調用的執行 ID。 因此,如果您想從命令行運行上述插件並且它是特定 execution1 的配置,您可以執行:
mvn myqyeryplugin:queryMojo@execution1
我最后的工作 docker 命令:
docker run -it --rm --name parser -v "$(shell pwd)":/usr/src/parser -w /usr/src/parser maven:3.6.3-jdk-8 mvn -X install:install-file@install-my-jar-file
其中install-my-jar-file
是我的執行 ID <execution><id>install-my-jar-file</id>...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.