|
|
|
description = "Spring Aspects"
|
|
|
|
|
|
|
|
// redefine the compileJava and compileTestJava tasks in order to
|
|
|
|
// compile sources with ajc instead of javac
|
|
|
|
|
|
|
|
configurations {
|
Eliminate all Javadoc warnings
- Support external Javadoc links using Gradle's javadoc.options.links
- Fix all other Javadoc warnings, such as typos, references to
non-existent (or no longer existent) types and members, etc,
including changes related to the Quartz 2.0 upgrade (SPR-8275) and
adding the HTTP PATCH method (SPR-7985).
- Suppress all output for project-level `javadoc` tasks in order to
hide false-negative warnings about cross-module @see and @link
references (e.g. spring-core having a @see reference to spring-web).
Use the `--info` (-i) flag to gradle at any time to see project-level
javadoc warnings without running the entire `api` task. e.g.
`gradle :spring-core:javadoc -i`
- Favor root project level `api` task for detection of legitimate
Javadoc warnings. There are now zero Javadoc warnings across the
entirety of spring-framework. Goal: keep it that way.
- Remove all @link and @see references to types and members that exist
only in Servlet <= 2.5 and Hibernate <= 4.0, favoring 3.0+ and 4.0+
respectively. This is necessary because only one version of each of
these dependencies can be present on the global `api` javadoc task's
classpath. To that end, the `api` task classpath has now been
customized to ensure that the Servlet 3 API and Hibernate Core 4 jars
have precedence.
- SPR-8896 replaced our dependency on aspectjrt with a dependency on
aspectjweaver, which is fine from a POM point of view, but causes
a spurious warning to be emitted from the ant iajc task that it
"cannot find aspectjrt on the classpath" - even though aspectjweaver
is perfectly sufficient. In the name of keeping the console quiet, a
new `rt` configuration has been added, and aspectjrt added as a
dependency to it. In turn, configurations.rt.asPath is appended to
the iajc classpath during both compileJava and compileTestJava for
spring-aspects.
Issue: SPR-10078, SPR-8275, SPR-7985, SPR-8896
12 years ago
|
|
|
rt
|
|
|
|
ajc
|
|
|
|
aspects
|
|
|
|
ajInpath
|
|
|
|
}
|
|
|
|
|
|
|
|
// exclude spring-aspects as a module within IDEA until IDEA-64446 is resolved
|
|
|
|
tasks.getByName("idea").onlyIf { false }
|
|
|
|
tasks.getByName("ideaModule").onlyIf { false }
|
|
|
|
|
|
|
|
compileJava {
|
|
|
|
actions = []
|
|
|
|
dependsOn configurations.ajc.getTaskDependencyFromProjectDependency(true, "compileJava")
|
|
|
|
|
|
|
|
def outputDir = project.sourceSets.main.java.outputDir
|
|
|
|
|
|
|
|
inputs.files(project.sourceSets.main.allSource + project.sourceSets.main.compileClasspath)
|
|
|
|
outputs.dir outputDir
|
|
|
|
|
|
|
|
ext.sourceCompatibility = project(":spring-core").compileJava.sourceCompatibility
|
|
|
|
ext.targetCompatibility = project(":spring-core").compileJava.targetCompatibility
|
|
|
|
|
|
|
|
doLast{
|
|
|
|
// Assemble runtime classpath from folders and JARs that actually exist
|
|
|
|
def runtimeClasspath = project.files(sourceSets.main.runtimeClasspath.files.findAll({ it.exists() }))
|
|
|
|
|
|
|
|
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,**/*.aj",
|
|
|
|
classpath: (runtimeClasspath + configurations.rt).asPath) {
|
|
|
|
sourceroots {
|
|
|
|
sourceSets.main.java.srcDirs.each {
|
|
|
|
pathelement(location:it.absolutePath)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
compileTestJava {
|
|
|
|
actions = []
|
|
|
|
dependsOn configurations.ajc.getTaskDependencyFromProjectDependency(true, "compileTestJava")
|
|
|
|
dependsOn jar
|
|
|
|
|
|
|
|
def outputDir = project.sourceSets.test.java.outputDir
|
|
|
|
|
|
|
|
inputs.files(project.sourceSets.test.allSource + project.sourceSets.test.compileClasspath)
|
|
|
|
outputs.dir outputDir
|
|
|
|
|
|
|
|
ext.sourceCompatibility = project(":spring-core").compileTestJava.sourceCompatibility
|
|
|
|
ext.targetCompatibility = project(":spring-core").compileTestJava.targetCompatibility
|
|
|
|
|
|
|
|
doLast{
|
|
|
|
// Assemble runtime classpath from folders and JARs that actually exist
|
|
|
|
def runtimeClasspath = project.files(sourceSets.test.runtimeClasspath.files.findAll({ it.exists() }))
|
|
|
|
|
|
|
|
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: (runtimeClasspath + project.files(jar.archivePath) + configurations.rt).asPath) {
|
|
|
|
sourceroots {
|
|
|
|
sourceSets.test.java.srcDirs.each {
|
|
|
|
pathelement(location:it.absolutePath)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
aspects(project(":spring-orm"))
|
|
|
|
ajc("org.aspectj:aspectjtools:${aspectjVersion}")
|
|
|
|
rt("org.aspectj:aspectjrt:${aspectjVersion}")
|
|
|
|
compile("org.aspectj:aspectjweaver:${aspectjVersion}")
|
|
|
|
optional(project(":spring-aop")) // for @Async support
|
|
|
|
optional(project(":spring-beans")) // for @Configurable support
|
|
|
|
optional(project(":spring-context")) // for @Enable* support
|
|
|
|
optional(project(":spring-context-support")) // for JavaMail and JSR-107 support
|
|
|
|
optional(project(":spring-orm")) // for JPA exception translation support
|
|
|
|
optional(project(":spring-tx")) // for JPA, @Transactional support
|
|
|
|
optional("javax.cache:cache-api:1.0.0") // for JCache aspect
|
|
|
|
optional("javax.transaction:javax.transaction-api:1.2") // for @javax.transaction.Transactional support
|
|
|
|
testCompile(project(":spring-core")) // for CodeStyleAspect
|
|
|
|
testCompile(project(":spring-test"))
|
|
|
|
testCompile("javax.mail:javax.mail-api:${javamailVersion}")
|
|
|
|
}
|
|
|
|
|
|
|
|
eclipse.project {
|
|
|
|
natures += "org.eclipse.ajdt.ui.ajnature"
|
|
|
|
buildCommands = [new org.gradle.plugins.ide.eclipse.model.BuildCommand("org.eclipse.ajdt.core.ajbuilder")]
|
|
|
|
}
|