Browse Source
- 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
pull/22/head
3 changed files with 71 additions and 82 deletions
@ -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) |
|
||||||
} |
|
||||||
@ -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) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
Loading…
Reference in new issue