Maven测试范围依赖性更改不会重新编译模块的测试

时间:2016-08-31 10:34:48

标签: maven teamcity

我们有一个maven多模块项目,其中发生了以下奇怪现象:

  • module-x 有一个TEST(src / test / java / ...),它取决于 module-y 提供的代码,其代码未以其他方式使用在module-x中(即src / main / java /中没有任何东西依赖于module-y)
  • module-x 因此定义了对module-y的依赖,但使用<scope>test</scope>并在其中一个测试中使用该代码
  • 有人更改了 module-y 中的构造函数,并提交了破坏 module-x 测试的代码(因为它使用了旧的构造函数参数)
  • TeamCity在看到提交
  • 时运行java org.codehaus.plexus.classworlds.launcher.Launcher -f app-parent/pom.xml -B integration-test
  • 构建成功,因为maven没有重新编译/重新运行 module-x TEST代码,它只是重新编译 module-y 以及依赖于它的所有内容,默认编译范围

我相信人们会指出,为什么即使在模块-x等测试,但这个奇怪的设置暂时搁置一分钟。我想要理解的是:

如果某个项目(module-x)具有更改并重新编译的测试依赖项(module-y),那么就不应该注意这一点并进行新的&#34; test-compile&#34;对于项目(模块-x),&#34;测试依赖&#34;在什么改变(模块-Y)?我在这里看到的是正常行为吗?

编辑:从评论回复中看来,TeamCity正在被使用的事实可能是一个因素;我澄清了上面序列表中使用的命令。

编辑2:我应该注意参数&#34; -f app-parent / pom.xml&#34;实际上是主要依赖于&#34;世界&#34;并且是从命令行运行的地方&#34; mvn test&#34;或&#34; mvn clean package&#34;重建一切。

0 个答案:

没有答案