最近发现了 java-test-fixtures gradle 插件并添加了它,以便在大型多项目存储库中的子项目测试之间共享一些功能,该存储库具有严格的 checkstyle 和 PMD 检查。
问题是测试装置文件夹中的那些类不包含在 checkstyle 或 PMD 检查中,因为默认情况下它们设置为仅查看 src/main 和 src/test 文件夹。
我的主要问题是是否有办法将 testFixtures/ 文件夹包含到 checkstyle 检查中。
我尝试在 gradle 中为 testFixtures 创建自定义源集,但无法将其添加为 checkstyle 任务的源集之一
最终凭借纯粹的运气找到了解决方案,所以来这里回答以防万一有人偶然发现这个:
Checkstyle 和 PMD gradle 任务都知道 sourceSet,因此一旦重新加载 gradle,它就会知道 testFixtures 有一个新的 sourceSet,然后生成 checkstyleTestFixtures 和 pmdTestFixtures,它们可以链接到主 checkstyle 和pmd 按以下方式执行任务(对于 PMD,只需将 checkstyle 替换为 pmd):
tasks.register('checkstyle') {
finalizedBy checkstyleMain //typical chain for checks
finalizedBy checkstyleTest //typical chain for checks
//this if statement checks if the testFixture directory is present
//in order to only add the task dependency if the plugin is used
if (!fileTree('src/testFixtures').empty)
finalizedBy checkstyleTestFixtures
}