我目前正在使用Java中的基于Maven的项目(我们称之为Core),我们目前已将其拆分为以下模块:
我目前使用IntelliJ作为我的IDE,他们都构建并拥有自己的pom文件(Core项目还包含单元测试)。虽然唯一具有可用输出的模块是Core one,但Core.Integration仅用于将测试Core与其他项目集成,因此该模块没有实际输出。
我们已经将Core.Integration作为自己的模块,而不是在核心中使用测试文件夹,因为它有其他依赖项,例如另一个内部项目(让我们称之为ThirdParty),所以为了证明Core与ThirdParty一起工作,我们有一个集成测试套件。 Core模块不需要知道ThirdParty,单元测试也不需要使用这个其他项目,因为Maven中只有一个测试范围,我们不希望用这种依赖关系弄脏Core模块。 / p>
所以...现在我们知道为什么我们有这个单独的集成测试模块,我将解决主要问题......
让我们说Core模块本身构建良好并且所有单元测试都通过,然后你会发现Core.Integration模块中存在一个失败的测试。如果您打开了这两个模块,那么您可以实现这一点,而不是在修复失败的测试之前部署您的更改。然而,其他一些IDE只打开一个模块,你必须手动告诉它包含其他模块,所以让我们说开发人员检查项目,然后加载核心模块,但不包括集成测试模块因为他现在不需要它,他做了一个改变,一切都通过,他部署。在这一点上,构建被破坏了,我们必须重新访问它为什么以及在哪里破坏。
在.net中你有一个解决方案和许多项目的想法,如果其中一个项目失败,解决方案就会失败。所以采取上述方法并将其应用于.net(假装我们也有一个名为“Core”的解决方案)。如果我们要查看我们的解决方案并打开它,我们会自动查看所有子项目,然后如果我们进行相同的更改并构建解决方案,它会告诉我们它已失败,因为其中一个子项目失败了。这就是我所说的,父解决方案的想法,它有许多儿童模型,总是被加载在一起,然后如果一个失败,它都会失败,所以关于破坏测试的反馈在它之前给出太晚了。而目前它们似乎只是单个模块而没有链接。
我的另一个问题也是不同的开发人员使用不同的IDE(即IntelliJ,Eclipse,Netbeans),所以如果这种项目结构可以使用Maven风格的pom方法,那么我需要它,所以不同的IDE应该识别这个没有手动步骤必须包括其他模块等......
很抱歉那里有很多华夫饼干,但是想要给出具体问题和项目结构的更全面的背景。
答案 0 :(得分:0)
经过几年的研究,如果不破解某些IDE或项目文件,您似乎无法真正做到这一点。
理想情况下我想要
MyProject的 | - MyProject.Core | - MyProject.IntegrationTests
因此,如果有任何失败,MyProject将被归类为失败的构建......
我反而放弃了
如果一个人失败我只是使用常识并决定它的构建失败......