我有一个可以通过 eclipse(ECJ)很好地构建的项目但是 Oracle javac 无法构建它(某些原因,如链接the different of ecj and javac所示)。
我想从eclipse转向Gradle构建,以便Jenkins可以运行Gradle脚本。但是Gradle始终使用javac进行编译。我使用了插件“eclipse,eclipse-wtp”或库,对jdt的依赖配置gradle使用了ECJ,但它仍然不使用ECJ进行编译:
compileJava{
options.forkOptions.with {
executable = 'java'
jvmArgs = ['-classpath','_mylibary_jdt_jar']
}
}
问题:我不知道用Gradle 4.1用Eclipse Compiler(ECJ)运行任务来编译我期望的类的方式(没有文档,有些方式,但是由于旧的gradle或不正确而过期)。
最佳答案
将其添加到gradle构建脚本中对我而言有效:
configurations {
ecj
}
dependencies {
ecj 'org.eclipse.jdt.core.compiler:ecj:4.6.1'
}
compileJava {
options.fork = true
options.forkOptions.with {
executable = 'java'
jvmArgs = ['-classpath', project.configurations.ecj.asPath, 'org.eclipse.jdt.internal.compiler.batch.Main', '-nowarn']
}
}