【发布时间】:2012-06-11 15:43:10
【问题描述】:
在 Maven 中,是否有某种方法可以指定 JUnit 测试仅在源代码发生更改时才运行?
例如,我看到了这条消息
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ my_project ---
[INFO] Nothing to compile - all classes are up to date
现在 - 由于没有编译任何代码(因为上次编译没有更改),我宁愿不运行任何测试。这可能吗?
【问题讨论】:
-
请问如果没有更改代码,你为什么运行编译目标?
-
这里发生了两件事。 1 - 我有一个包含多个配置文件的项目。每个配置文件都有不同的配置文件,它们将被打包到战争中,但是这些配置文件都没有在测试中使用(测试有自己的一组“模拟”配置文件)。因此,一旦测试通过了 1 个配置文件构建,它们将全部通过。真的没有必要为每个构建的配置文件运行测试。 2 - 我正在尝试建立一个多模块构建。每次构建运行以更改任何模块时 - 它都在运行所有测试(即使是 w/0 更改的模块)。
-
啊,我明白了。我想可能有人认为,如果在配置签入后不应该运行测试,那么配置和代码不应该是同一个多模块构建的一部分。我知道这对你没有帮助!也许将您的构建拆分为 3. BuildA 用于代码,由源代码更改触发,并始终运行测试。 BuildB 仅用于配置。以及由 A 或 B 的构建触发的 Web 应用的 BuildC。BuildC 仅使用来自 A 和 B 的构建工件,因此不会触发编译/测试。
-
仅供参考,如果标准插件不能满足您的要求,您可能需要覆盖 grepcode.com/file/repo1.maven.org/maven2/…。
-
您的项目设置可以在一个模块中完成。将测试分解为不同的模块,甚至可能将不同的配置文件分解为单独的模块,所有这些都可以正常工作。