考虑两个项目。
在mycompany-foo中,我定义了一些我想在许多其他项目中使用的对象。为了便于代码重用,mycompany-foo-tests定义了可以匹配mycompany-foo对象的hamcrest匹配器。
问题是mycompany-foo-tests将依赖于mycompany-foo,以便我为它创建匹配器。然后mycompany-foo将依赖于mycompany-foo-tests,这样我就可以在mycompany-foo的测试中做一些匹配。这会产生循环依赖。我想避免的东西。
我通过简单地将匹配器添加到mycompany-foo,删除“tests”项目,并将包含匹配器的测试jar导出为“test-jar”来解决这个问题。
一切都进展顺利,直到我得知Atlassian的三叶草安装了它在我的m2 repo [1]中创建的文物。这会覆盖我的测试jar并导致下游项目在无法初始化我的匹配器的三叶草版本时失败。
我看到的建议是不要创建一个测试jar,而是回到我以前做过的事情。也就是说,为匹配者提供一个完整的独立项目。有没有办法在不创建循环依赖的情况下做到这一点?