Java “如何避免跑步”;测试“;再次在跑步时;安装";
在我们的maven项目中,我们有两个目标:Java “如何避免跑步”;测试“;再次在跑步时;安装";,java,maven,Java,Maven,在我们的maven项目中,我们有两个目标:clean、test和install 如果我运行mvn clean install,它将运行test,这是install的先决条件。如果在没有任何代码更改的情况下再次运行mvn clean install,它将再次运行test 如何使其足够智能,以避免第二次不必要地运行test mvn clean install -Dmaven.test.skip=true 每个Maven阶段都运行生命周期的每个Maven阶段,除了clean。i、 e.test运行验
clean
、test
和install
如果我运行mvn clean install
,它将运行test
,这是install
的先决条件。如果在没有任何代码更改的情况下再次运行mvn clean install
,它将再次运行test
如何使其足够智能,以避免第二次不必要地运行test
mvn clean install -Dmaven.test.skip=true
每个Maven阶段都运行生命周期的每个Maven阶段,除了
clean
。i、 e.test
运行验证、编译和测试
因此,既然install
已经运行了每一个正在进行的阶段,包括test
,就不用麻烦显式地调用mvn test
。如果测试失败,它将不再继续
tl;医生:你想要的是
mvn clean install
您可以通过参数告诉maven包含/排除测试:
# Exclude one test class, by using the explanation mark (!)
mvn clean install -Dtest=!LegacyTest
# Exclude one test method
mvn clean install -Dtest=!LegacyTest#testFoo
# Exclude two test methods
mvn clean install -Dtest=!LegacyTest#testFoo+testBar
# Exclude a package with a wildcard (*)
mvn clean install -Dtest=!com.mycompany.app.Legacy*
要告诉maven包含特定测试,请执行以下操作:
# Include one file
mvn clean install -Dtest=AppTest
# Include one method
mvn clean install -Dtest=AppTest#testFoo
# Include two methods with the plus sign (+)
mvn clean install -Dtest=AppTest#testFoo+testBar
# Include multiple items comma separated and with a wildcard (*)
mvn clean install -Dtest=AppTest,Web*
# Include by Package with a wildcard (*)
mvn clean install -Dtest=com.mycompany.*.*Test
注意:在使用bash时,我们可能需要转义“!”
mvn clean install -Dtest=\!LegacyTest
为了进行转义,我们必须使用反斜杠(\)您可以利用两个有用的属性来操作测试用例
# Skip test cases compilation
mvn -Dmaven.test.skip install
# Compile test cases but not execute them
mvn -DskipTests install
然而,若您希望maven只运行已经更改的测试,那个么您就不能这样做。这是Gradle比Maven提供的非常方便的东西之一
您可以查看此网站:
这家伙创建了一个poc,虽然这是一个解决办法(不是maven提供的),所以我认为您希望Gradle smart things适用于您的案例。然后您可以两次编译和验证所有内容,有什么好处?