我们正在开发一个能够在构建时检测(更改)类文件的Java项目。我们定义了一个Gradle任务,它调用一个基于java的Ant任务,该任务接受inputDir(例如build / classes)和outputDir(例如build / classes-instrumented)和可能的其他参数。编译后,为main和test类文件单独调用该任务。由于“普通”java sourceSet不太合适,我们首先想到的是实现我们自己的sourceSet但是找不到简单的方法。类似于ANTLR等的合理替代方案似乎是额外的变量。由于我需要几个,我去了一张地图。
sourceSets.all { ext.instrumentation = [:] }
sourceSets.all {
instrumentation.inputDir = null
instrumentation.outputDir = null
instrumentation.classPath = null
}
def postfix = '-instrumented'
下面你看看我们如何初始化变量。
sourceSets {
main {
instrumentation.inputDir = sourceSets.main.output.classesDir
instrumentation.outputDir = instrumentation.inputDir + postfix
instrumentation.classPath = sourceSets.main.output + configurations.compile
}
test {
instrumentation.inputDir = sourceSets.test.output.classesDir
instrumentation.outputDir = instrumentation.inputDir + postfix
}
}
然而它失败了“找不到方法main()参数[build_f2cvmoa3v4hnjefifhpuk6ira $ _run_closure5_closure23 @ 12a14b74]在root上 项目'Continuations'。“
我们正在使用Gradle 2.1
我有以下问题:
非常感谢你的帮助
答案 0 :(得分:0)
解决方案:安装上一版本。
我遇到了同样的问题,我阅读了gradle 3的gradle文档,但是安装了gradle 2.7。
https://docs.gradle.org/2.7/userguide/tutorial_java_projects.html#N103CD
,但在该版本的java插件中找不到有关sourceSet的信息