gradle构建测试时如何执行一些代码

Kotlin有一个名为all open的编译器插件。 它强制所有带有一些注释的类都是打开的。

我想为我的测试使用这个特性,但是我不想让它在我的生产代码中(我想让我的类关闭)。 我该怎么做?

我尝试了这样的:

test { allOpen { annotation('com.my.Annotation') } } 

但代码总是执行。

发生这种情况是因为该插件应用于build.gradle文件的根目录中。

除非设置了一些项目属性,否则100%工作的解决方案是不应用插件。

 if (project.hasProperty("allopen")) { apply plugin: "kotlin-allopen" allOpen { annotation('com.my.Annotation') } } 

并运行属性gradle -Pallopen testgradle -Pallopen test

也许一些Gradle大师可以用更好的解决方案来加入。