Fix and refactor spring-aspects build
- Fix compileTestJava issue in which test classes were not being
compiled or run
- Use built-in eclipse.project DSL instead of withXml closure
to add AspectJ nature and builder
- Rename {aspectJ=>aspects}.gradle and format source
This commit is contained in:
@@ -432,7 +432,7 @@ project('spring-struts') {
|
|||||||
|
|
||||||
project('spring-aspects') {
|
project('spring-aspects') {
|
||||||
description = 'Spring Aspects'
|
description = 'Spring Aspects'
|
||||||
apply from: 'aspectJ.gradle'
|
apply from: 'aspects.gradle'
|
||||||
dependencies {
|
dependencies {
|
||||||
compile project(":spring-orm")
|
compile project(":spring-orm")
|
||||||
aspects project(":spring-orm")
|
aspects project(":spring-orm")
|
||||||
@@ -440,6 +440,10 @@ project('spring-aspects') {
|
|||||||
compile "org.aspectj:aspectjrt:1.6.8"
|
compile "org.aspectj:aspectjrt:1.6.8"
|
||||||
testCompile project(":spring-test")
|
testCompile project(":spring-test")
|
||||||
}
|
}
|
||||||
|
eclipse.project {
|
||||||
|
natures += 'org.eclipse.ajdt.ui.ajnature'
|
||||||
|
buildCommand 'org.eclipse.ajdt.core.ajbuilder'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
configure(rootProject) {
|
configure(rootProject) {
|
||||||
|
|||||||
@@ -1,81 +0,0 @@
|
|||||||
// Original source: https://raw.github.com/cbeams/gradleplugins/0.9-upgrade/aspectjPlugin/aspectJ.gradle
|
|
||||||
// Included locally here to avoid failure when not connected to the network.
|
|
||||||
// See http://issues.gradle.org/browse/GRADLE-1768
|
|
||||||
apply plugin:'java'
|
|
||||||
apply plugin:'eclipse'
|
|
||||||
|
|
||||||
configurations {
|
|
||||||
ajc
|
|
||||||
aspects
|
|
||||||
ajInpath
|
|
||||||
}
|
|
||||||
|
|
||||||
task compileJava(dependsOn: JavaPlugin.PROCESS_RESOURCES_TASK_NAME, overwrite: true) {
|
|
||||||
dependsOn configurations.ajc.getTaskDependencyFromProjectDependency(true, "compileJava")
|
|
||||||
inputs.files(project.sourceSets.main.allSource + project.sourceSets.main.compileClasspath)
|
|
||||||
outputs.files(project.sourceSets.main.classesDir)
|
|
||||||
|
|
||||||
doLast{
|
|
||||||
ant.taskdef( resource:"org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties", classpath: configurations.ajc.asPath)
|
|
||||||
ant.iajc(source:sourceCompatibility, target:targetCompatibility, destDir:sourceSets.main.classesDir.absolutePath, maxmem:"1024m", fork:"true",
|
|
||||||
aspectPath:configurations.aspects.asPath, inpath:configurations.ajInpath.asPath, sourceRootCopyFilter:"**/.svn/*,**/*.java",classpath:configurations.compile.asPath,
|
|
||||||
Xlint:"ignore"){
|
|
||||||
|
|
||||||
sourceroots{
|
|
||||||
sourceSets.main.java.srcDirs.each{
|
|
||||||
pathelement(location:it.absolutePath)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
task compileTestJava(dependsOn: JavaPlugin.PROCESS_TEST_RESOURCES_TASK_NAME, overwrite: true) {
|
|
||||||
dependsOn configurations.ajc.getTaskDependencyFromProjectDependency(true, "compileTestJava")
|
|
||||||
inputs.files(project.sourceSets.test.allSource + project.sourceSets.test.compileClasspath)
|
|
||||||
outputs.files(project.sourceSets.test.classesDir)
|
|
||||||
|
|
||||||
doLast{
|
|
||||||
ant.taskdef( resource:"org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties", classpath: configurations.ajc.asPath)
|
|
||||||
ant.iajc(source:sourceCompatibility, target:targetCompatibility, destDir:sourceSets.main.classesDir.absolutePath, maxmem:"1024m", fork:"true",
|
|
||||||
aspectPath:configurations.aspects.asPath, inpath:configurations.ajInpath.asPath, sourceRootCopyFilter:"**/.svn/*,**/*.java",classpath:configurations.compile.asPath,
|
|
||||||
Xlint:"ignore"){
|
|
||||||
|
|
||||||
sourceroots{
|
|
||||||
sourceSets.main.java.srcDirs.each{
|
|
||||||
pathelement(location:it.absolutePath)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//add aspectj support for eclipse plugin
|
|
||||||
eclipseClasspath.withXml { xmlProvider ->
|
|
||||||
def classpath = xmlProvider.asNode()
|
|
||||||
def xmlparser = new XmlParser()
|
|
||||||
|
|
||||||
configurations.aspects.files.each{ aspectsLib ->
|
|
||||||
classpath.children().findAll{ it['@path'] == aspectsLib.absolutePath }.each {
|
|
||||||
def attrs = xmlparser.createNode(it, 'attributes', [:])
|
|
||||||
xmlparser.createNode(attrs, 'attribute', [name: 'org.eclipse.ajdt.aspectpath', value: 'true']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
eclipseProject.withXml { xmlProvider->
|
|
||||||
def projectDescription = xmlProvider.asNode()
|
|
||||||
def xmlparser = new XmlParser()
|
|
||||||
|
|
||||||
def builders = projectDescription.buildSpec[0]
|
|
||||||
def ajbuilder = xmlparser.createNode(builders, 'buildCommand', [:])
|
|
||||||
xmlparser.createNode(ajbuilder, 'name', [:]).setValue('org.eclipse.ajdt.core.ajbuilder')
|
|
||||||
xmlparser.createNode(ajbuilder, 'arguments', [:]);
|
|
||||||
|
|
||||||
def natures = projectDescription.natures[0]
|
|
||||||
def ajnature = xmlparser.createNode(null, 'nature', [:])
|
|
||||||
ajnature.setValue('org.eclipse.ajdt.ui.ajnature');
|
|
||||||
natures.children().add(0, ajnature)
|
|
||||||
}
|
|
||||||
66
spring-aspects/aspects.gradle
Normal file
66
spring-aspects/aspects.gradle
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
// redefine the compileJava and compileTestJava tasks in order to
|
||||||
|
// compile sources with ajc instead of javac
|
||||||
|
|
||||||
|
configurations {
|
||||||
|
ajc
|
||||||
|
aspects
|
||||||
|
ajInpath
|
||||||
|
}
|
||||||
|
|
||||||
|
task compileJava(overwrite: true) {
|
||||||
|
dependsOn JavaPlugin.PROCESS_RESOURCES_TASK_NAME
|
||||||
|
dependsOn configurations.ajc.getTaskDependencyFromProjectDependency(true, "compileJava")
|
||||||
|
|
||||||
|
def outputDir = project.sourceSets.main.output.classesDir
|
||||||
|
|
||||||
|
inputs.files(project.sourceSets.main.allSource + project.sourceSets.main.compileClasspath)
|
||||||
|
outputs.dir outputDir
|
||||||
|
|
||||||
|
doLast{
|
||||||
|
ant.taskdef(resource: "org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties",
|
||||||
|
classpath: configurations.ajc.asPath)
|
||||||
|
|
||||||
|
ant.iajc(source: sourceCompatibility, target: targetCompatibility,
|
||||||
|
maxmem: "1024m", fork: "true", Xlint: "ignore",
|
||||||
|
destDir: outputDir.absolutePath,
|
||||||
|
aspectPath: configurations.aspects.asPath,
|
||||||
|
inpath: configurations.ajInpath.asPath,
|
||||||
|
sourceRootCopyFilter: "**/*.java",
|
||||||
|
classpath: configurations.compile.asPath) {
|
||||||
|
sourceroots {
|
||||||
|
sourceSets.main.java.srcDirs.each {
|
||||||
|
pathelement(location:it.absolutePath)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
task compileTestJava(overwrite: true) {
|
||||||
|
dependsOn JavaPlugin.PROCESS_TEST_RESOURCES_TASK_NAME
|
||||||
|
dependsOn configurations.ajc.getTaskDependencyFromProjectDependency(true, "compileTestJava")
|
||||||
|
dependsOn jar
|
||||||
|
|
||||||
|
def outputDir = project.sourceSets.test.output.classesDir
|
||||||
|
|
||||||
|
inputs.files(project.sourceSets.test.allSource + project.sourceSets.test.compileClasspath)
|
||||||
|
outputs.dir outputDir
|
||||||
|
|
||||||
|
doLast{
|
||||||
|
ant.taskdef(resource: "org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties",
|
||||||
|
classpath: configurations.ajc.asPath)
|
||||||
|
|
||||||
|
ant.iajc(source: sourceCompatibility, target: targetCompatibility,
|
||||||
|
maxmem: "1024m", fork: "true", Xlint: "ignore",
|
||||||
|
destDir: outputDir.absolutePath,
|
||||||
|
aspectPath: jar.archivePath,
|
||||||
|
inpath: configurations.ajInpath.asPath,
|
||||||
|
classpath: configurations.testRuntime.asPath + configurations.compile.asPath + jar.archivePath) {
|
||||||
|
sourceroots {
|
||||||
|
sourceSets.test.java.srcDirs.each {
|
||||||
|
pathelement(location:it.absolutePath)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user