Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “如何避免跑步”;测试“;再次在跑步时;安装";_Java_Maven - Fatal编程技术网

Java “如何避免跑步”;测试“;再次在跑步时;安装";

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运行验

在我们的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
运行验证、编译和测试

因此,既然
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适用于您的案例。

然后您可以两次编译和验证所有内容,有什么好处?