我認為我對 maven 和它的行為非常熟悉,但我沒有弄清楚這個。我有一個父專案,我在其中定義了屬性:
<maven.test.skip>true</maven.test.skip>
我知道這意味著不構建測驗罐。
然后我在父專案中創建了三個屬性,如下所示
<skipChild1Test>true</skipChild1Test>
<skipChild2Test>true</skipChild2Test>
<skipChild3Test>true</skipChild3Test>
每個子專案都有一個 maven-surefire-plugin 部分,如下所示
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
<configuration>
<skipTests>${skipChildNtest}</skipTests>
</configuration>
</plugin>
基本上我想在父 POM 中靜態宣告哪些子專案應該運行測驗,哪些不運行。
然而,這些屬性似乎根本沒有影響,而且都是由原始屬性驅動的
<maven.test.skip>true</maven.test.skip>
如果為假,則對子項運行測驗,如果為真則不運行。
我總是mvn test在父專案上發出命令
我是不是把孩子配置錯了?
更新
查看 maven-surefire-plugin 測驗目標詳細資訊,我閱讀了有關跳過引數的以下內容:
"將此設定為 "true" 以完全繞過單元測驗。不推薦使用它,特別是如果您使用 "maven.test.skip" 屬性啟用它,因為 maven.test.skip 禁用運行測驗和編譯測驗. 考慮改用skipTests 引數。 ”
所以我在 stackoverflow 和許多其他地方讀到的都是不正確的。maven.test.skip 驅動打包和運行測驗
uj5u.com熱心網友回復:
您可以使用以下命令覆寫子專案中的屬性 <maven.test.skip>${skipChildNtest}</maven.test.skip>
因此<maven.test.skip>,您的父專案中的屬性不會干擾您的子專案。
也許你也可以在你的子專案中去掉插件宣告,但我不確定。
uj5u.com熱心網友回復:
我是不是把孩子配置錯了?
Surefire 插件有幾個相關的屬性:skipTests,skipExec和skip.
當您設定skipTests的配置屬性,它會覆寫舊的skip屬性,你通過設定maven.test.skip屬性。
相應的屬性和配置名稱是:
| 財產 | 配置 |
|---|---|
skipTests |
skipTests |
maven.test.skip.exec |
skipExec |
maven.test.skip |
skip |
要對應于該maven.test.skip屬性,您應該使用:
<configuration>
<skip>${skipChildNtest}</skip>
</configuration>
反而。
您還可以考慮插件的建議,并skipTests用于兩者,仍然編譯測驗但不運行,。
uj5u.com熱心網友回復:
解決方案
正如 Reto 所建議的,我只是在所有子專案中重新宣告了 maven.test.skip。該值仍然在父專案中配置。舉個例子:
從父母的角度來看,我定義了以下屬性:
<skipChild1Test>true</skipChild1Test>
從 CHILD1 的角度來看,我定義了以下屬性:
<maven.test.skip>${skipChild1Test}</maven.test.skip>
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/335016.html
