Cannot add task ':jacocoTestReport' as a task with that name already exists

在工作中也遇到了这个问题,但是我觉得stackoverflow的这个解法不对
https://stackoverflow.com/questions/49372067/cannot-add-task-jacocotestreport-as-a-task-with-that-name-already-exists

这个问题的本质应该是,创建了已经存在的task,通俗点,方法名重复了。

原本期望是给每个编译类型的task都动态创建一个jacocoTask(这里jacocoTask是jacoco插件原本的名字哈)

image.png

createJacocoTask这个方法里,就def了一个新的task,叫做jacocoTestReport,
(我的业务代码就不放了,定义基本与stackoverflow的这个一样)


image.png

bug原因就在这里了,每个variant都要创建task,至少有debug跟release两个variant,那么就导致存在两个jacocoTestReport。

解法1:动态创建方法名,避免重名。

    def taskName =  "jacocoTestReport${variantName.capitalize()}"
    tasks.create(name: "${taskName}", type: JacocoReport)

解法2:减少variant,其实我们只需要关注debug,本质上只需要创建1个task就好了。(推荐)

你可能感兴趣的:(Cannot add task ':jacocoTestReport' as a task with that name already exists)