mirror of
https://github.com/corda/corda.git
synced 2024-12-24 07:06:44 +00:00
Added reusable and publishable quasar plugin.
This commit is contained in:
parent
f1a2c38e9f
commit
89e31dadcf
1
.gitignore
vendored
1
.gitignore
vendored
@ -4,6 +4,7 @@
|
|||||||
.settings
|
.settings
|
||||||
tags
|
tags
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
*.orig
|
||||||
*.log
|
*.log
|
||||||
*.orig
|
*.orig
|
||||||
|
|
||||||
|
14
plugins/quasar/build.gradle
Normal file
14
plugins/quasar/build.gradle
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
apply plugin: 'maven-publish'
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
publishing {
|
||||||
|
publications {
|
||||||
|
core(MavenPublication) {
|
||||||
|
from components.java
|
||||||
|
artifactId 'quasar'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,57 @@
|
|||||||
|
import org.gradle.api.*
|
||||||
|
import org.gradle.api.tasks.testing.Test
|
||||||
|
import org.gradle.api.tasks.JavaExec
|
||||||
|
|
||||||
|
/**
|
||||||
|
* QuasarPlugin creates a "quasar" configuration, adds quasar as a dependency and creates a "quasarScan" task that scans
|
||||||
|
* for `@Suspendable`s in the code
|
||||||
|
*/
|
||||||
|
class QuasarPlugin implements Plugin<Project> {
|
||||||
|
void apply(Project project) {
|
||||||
|
|
||||||
|
project.repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
project.configurations.create("quasar")
|
||||||
|
// To add a local .jar dependency:
|
||||||
|
// project.dependencies.add("quasar", project.files("${project.rootProject.projectDir}/lib/quasar.jar"))
|
||||||
|
project.dependencies.add("quasar", "co.paralleluniverse:quasar-core:${project.rootProject.ext.quasar_version}:jdk8@jar")
|
||||||
|
project.dependencies.add("compile", project.configurations.getByName("quasar"))
|
||||||
|
|
||||||
|
project.tasks.withType(Test) {
|
||||||
|
jvmArgs "-javaagent:${project.configurations.quasar.singleFile}"
|
||||||
|
jvmArgs "-Dco.paralleluniverse.fibers.verifyInstrumentation"
|
||||||
|
}
|
||||||
|
project.tasks.withType(JavaExec) {
|
||||||
|
jvmArgs "-javaagent:${project.configurations.quasar.singleFile}"
|
||||||
|
jvmArgs "-Dco.paralleluniverse.fibers.verifyInstrumentation"
|
||||||
|
}
|
||||||
|
|
||||||
|
project.task("quasarScan") {
|
||||||
|
inputs.files(project.sourceSets.main.output)
|
||||||
|
outputs.files(
|
||||||
|
"$project.sourceSets.main.output.resourcesDir/META-INF/suspendables",
|
||||||
|
"$project.sourceSets.main.output.resourcesDir/META-INF/suspendable-supers"
|
||||||
|
)
|
||||||
|
} << {
|
||||||
|
|
||||||
|
// These lines tell gradle to run the Quasar suspendables scanner to look for unannotated super methods
|
||||||
|
// that have @Suspendable sub implementations. These tend to cause NPEs and are not caught by the verifier
|
||||||
|
// NOTE: need to make sure the output isn't on the classpath or every other run it generates empty results, so
|
||||||
|
// we explicitly delete to avoid that happening. We also need to turn off what seems to be a spurious warning in the IDE
|
||||||
|
ant.taskdef(name:'scanSuspendables', classname:'co.paralleluniverse.fibers.instrument.SuspendablesScanner',
|
||||||
|
classpath: "${project.sourceSets.main.output.classesDir}:${project.sourceSets.main.output.resourcesDir}:${project.configurations.runtime.asPath}")
|
||||||
|
project.delete "$project.sourceSets.main.output.resourcesDir/META-INF/suspendables", "$project.sourceSets.main.output.resourcesDir/META-INF/suspendable-supers"
|
||||||
|
ant.scanSuspendables(
|
||||||
|
auto:false,
|
||||||
|
suspendablesFile: "$project.sourceSets.main.output.resourcesDir/META-INF/suspendables",
|
||||||
|
supersFile: "$project.sourceSets.main.output.resourcesDir/META-INF/suspendable-supers") {
|
||||||
|
fileset(dir: project.sourceSets.main.output.classesDir)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
project.jar.dependsOn project.quasarScan
|
||||||
|
}
|
||||||
|
}
|
@ -8,4 +8,5 @@ include 'experimental'
|
|||||||
include 'test-utils'
|
include 'test-utils'
|
||||||
include 'network-simulator'
|
include 'network-simulator'
|
||||||
include 'explorer'
|
include 'explorer'
|
||||||
|
include 'plugins:quasar'
|
||||||
include 'docs/source/example-code'
|
include 'docs/source/example-code'
|
||||||
|
Loading…
Reference in New Issue
Block a user