其實,這個問題很老了,但是由於跨越了同樣的問題來到我無論如何要分享我的解決方案。
我找到的最佳解決方案是this。事實上,在Gradle中沒有對AspectJ的內置支持,現有的插件(例如Gradle AspectJ插件)不能與Lombok一起使用。所以解決方案是在你的代碼中手動編譯時織入。 一個準備去gradle.build對Java 8是該
buildscript {
repositories {
jcenter()
maven { url 'http://repo.spring.io/plugins-release' }
}
dependencies {
}
}
apply plugin: 'idea' // if you use IntelliJ
apply plugin: 'java'
ext {
aspectjVersion = '1.8.9'
springVersion = '4.2.1.RELEASE'
}
repositories {
jcenter()
}
configurations {
ajc
aspects
compile {
extendsFrom aspects
}
}
dependencies {
compile "org.aspectj:aspectjrt:$aspectjVersion"
compile "org.aspectj:aspectjweaver:$aspectjVersion"
ajc "org.aspectj:aspectjtools:$aspectjVersion"
aspects "org.springframework:spring-aspects:$springVersion"
}
def aspectj = { destDir, aspectPath, inpath, classpath ->
ant.taskdef(resource: "org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties",
classpath: configurations.ajc.asPath)
ant.iajc(
maxmem: "1024m", fork: "true", Xlint: "ignore",
destDir: destDir,
aspectPath: aspectPath,
inpath: inpath,
classpath: classpath,
source: project.sourceCompatibility,
target: project.targetCompatibility
)
}
compileJava {
doLast {
aspectj project.sourceSets.main.output.classesDir.absolutePath,
configurations.aspects.asPath,
project.sourceSets.main.output.classesDir.absolutePath,
project.sourceSets.main.runtimeClasspath.asPath
}
}
compileTestJava {
dependsOn jar
doLast {
aspectj project.sourceSets.test.output.classesDir.absolutePath,
configurations.aspects.asPath + jar.archivePath,
project.sourceSets.test.output.classesDir.absolutePath,
project.sourceSets.test.runtimeClasspath.asPath
}
}
你可以在article already mentioned above找到更多的解釋。這裏給出的build.gradle是本文給出的更新版本,允許使用Java 8和AspectJ 1.8.9版本,此外所有不必要的東西都將被刪除。
*我想說的道歉 - AspectJ + Gradle + Lombok不起作用。 – Setzer