rhino/build.gradle

416 строки
13 KiB
Groovy

plugins {
id 'java'
id 'idea'
id 'eclipse'
id 'maven-publish'
id 'jacoco'
id 'distribution'
id 'checkstyle'
id 'com.github.spotbugs' version "4.2.4"
}
tasks.withType(JavaCompile) {
sourceCompatibility = 1.8
targetCompatibility = 1.8
options.encoding = "UTF-8"
options.compilerArgs = [ "-Xlint:deprecation,unchecked" ]
}
compileTestJava {
options.compilerArgs = [ ]
}
repositories {
mavenCentral()
}
sourceSets {
main {
java {
srcDirs 'src', 'toolsrc', 'xmlimplsrc'
}
resources {
srcDirs 'src', 'toolsrc'
exclude "build.xml"
exclude "manifest"
}
}
test {
java {
srcDirs "testsrc", 'examples'
exclude 'tests/**'
}
resources {
srcDirs "testsrc"
}
}
jmh {
java {
srcDirs "benchmarks"
}
compileClasspath += sourceSets.test.runtimeClasspath
runtimeClasspath += sourceSets.test.runtimeClasspath
}
}
dependencies {
testImplementation "junit:junit:4.13"
testImplementation "org.yaml:snakeyaml:1.26"
jmhImplementation project
jmhImplementation 'org.openjdk.jmh:jmh-core:1.23'
jmhAnnotationProcessor 'org.openjdk.jmh:jmh-generator-annprocess:1.23'
}
test {
useJUnit()
exclude "**/benchmarks/**"
jvmArgs += '-Xss1280k'
jacoco.excludes = ['**/testsrc_tests_ecma_3_RegExp_perlstress*']
systemProperty 'java.awt.headless', 'true'
systemProperty 'mozilla.js.tests', 'testsrc/tests'
systemProperty 'mozilla.js.tests.timeout', 60000
systemProperty 'user.language', 'en'
systemProperty 'user.country', 'US'
systemProperty 'user.timezone', 'America/Los_Angeles'
systemProperty 'file.encoding', 'UTF-8'
maxHeapSize = "1g"
testLogging.showStandardStreams = true
// Many tests do not clean up contexts properly. This makes the tests much
// more resilient at the expense of performance.
forkEvery = 1
maxParallelForks = 16
}
task sunSpiderBenchmark(type: JavaExec) {
classpath = sourceSets.jmh.runtimeClasspath
main = 'org.openjdk.jmh.Main'
args '-f', '1', '-bm', 'avgt', '-tu', 'us', 'SunSpider'
}
task v8Benchmark(type: JavaExec) {
classpath = sourceSets.jmh.runtimeClasspath
main = 'org.openjdk.jmh.Main'
args '-f', '1', '-bm', 'avgt', '-tu', 'us', 'V8'
}
task testBenchmark() {}
testBenchmark.dependsOn sunSpiderBenchmark
testBenchmark.dependsOn v8Benchmark
task microBenchmarks(type: JavaExec, description: 'JMH benchmarks') {
classpath = sourceSets.jmh.runtimeClasspath
main = 'org.openjdk.jmh.Main'
args '-f', '1', '-bm', 'avgt', '-tu', 'ns', 'ObjectCall'
}
task jmhHelp(type: JavaExec, description: 'JMH benchmarks') {
classpath = sourceSets.jmh.runtimeClasspath
main = 'org.openjdk.jmh.Main'
args '-help'
}
idea {
module {
excludeDirs += file('testsrc/tests/src')
excludeDirs += file('buildGradle')
excludeDirs += file('build')
excludeDirs += file('.idea')
excludeDirs += file('lib')
}
}
task runtimeJar(type: Jar) {
dependsOn compileJava
archiveBaseName = 'rhino-runtime'
from sourceSets.main.output
excludes = ["org/mozilla/javascript/tools", "org/mozilla/javascript/engine/**", "META-INF/services/**"]
manifest {
attributes(
"Manifest-Version": "1.0",
"Implementation-Version": project.version,
"Implementation-Title": "Mozilla Rhino",
"Implementation-Vendor": "Mozilla Foundation",
"Implementation-URL": "http://www.mozilla.org/rhino",
"Built-Date": new Date().format("yyyy-MM-dd"),
"Built-Time": new Date().format("HH:mm:ss"),
"Bundle-ManifestVersion": "2",
"Bundle-SymbolicName": "org.mozilla.rhino-runtime",
"Bundle-Version": project.version.replaceAll("-.*", ""),
"Export-Package": "org.mozilla.javascript,org.mozilla.javascript.ast,org.mozilla.javascript.annotations"
)
}
}
task engineJar(type: Jar) {
dependsOn compileJava
archiveBaseName = 'rhino-engine'
from (sourceSets.main.output) {
include 'org/mozilla/javascript/engine/**'
include 'META-INF/services/**'
}
manifest {
attributes(
"Manifest-Version": "1.0",
"Implementation-Version": project.version,
"Implementation-Title": "Mozilla Rhino ScriptEngine",
"Implementation-Vendor": "Mozilla Foundation",
"Implementation-URL": "http://www.mozilla.org/rhino",
"Built-Date": new Date().format("yyyy-MM-dd"),
"Built-Time": new Date().format("HH:mm:ss"),
)
}
}
jar {
dependsOn runtimeJar, engineJar
from "LICENSE.txt"
excludes = ["org/mozilla/javascript/engine/**", "META-INF/services/**"]
manifest {
attributes(
"Manifest-Version": "1.0",
"Main-Class": "org.mozilla.javascript.tools.shell.Main",
"Implementation-Version": project.version,
"Implementation-Title": "Mozilla Rhino",
"Implementation-Vendor": "Mozilla Foundation",
"Implementation-URL": "http://www.mozilla.org/rhino",
"Built-Date": new Date().format("yyyy-MM-dd"),
"Built-Time": new Date().format("HH:mm:ss"),
"Bundle-ManifestVersion": "2",
"Bundle-SymbolicName": "org.mozilla.rhino",
"Bundle-Version": project.version.replaceAll("-.*", ""),
"Export-Package": "org.mozilla.javascript,org.mozilla.javascript.ast,org.mozilla.javascript.annotations"
)
}
}
javadoc {
options.addBooleanOption("-allow-script-in-comments", true)
options.addStringOption('Xdoclint:html', '-quiet')
}
task javadocJar(type: Jar) {
classifier = 'javadoc'
from javadoc
}
task runtimeJavadocJar(type: Jar) {
classifier = 'javadoc'
from javadoc
exclude 'org/mozilla/javascript/tools', 'org/mozilla/javascript/engine'
}
task engineJavadocJar(type: Jar) {
classifier = 'javadoc'
from javadoc
include 'org/mozilla/javascript/engine/**'
}
task sourceJar(type: Jar) {
from sourceSets.main.allJava
}
task runtimeSourceJar(type: Jar) {
classifier 'sources'
from sourceSets.main.allJava
exclude 'org/mozilla/javascript/tools', 'org/mozilla/javascript/engine'
}
task engineSourceJar(type: Jar) {
classifier 'sources'
from sourceSets.main.allJava
include 'org/mozilla/javascript/engine/**'
}
publishing {
publications {
rhino(MavenPublication) {
groupId 'org.mozilla'
artifactId 'rhino'
pom.withXml {
def root = asNode()
root.appendNode('description', """
Rhino is an open-source implementation of JavaScript written entirely in Java.
It is typically embedded into Java applications to provide scripting to end users.
""")
root.appendNode("url", "https://developer.mozilla.org/en/Rhino")
def p = root.appendNode("parent")
p.appendNode("groupId", "org.sonatype.oss")
p.appendNode("artifactId", "oss-parent")
p.appendNode("version", "7")
def l = root.appendNode("licenses").appendNode("license")
l.appendNode("name", "Mozilla Public License, Version 2.0")
l.appendNode("url", "http://www.mozilla.org/MPL/2.0/index.txt")
def scm = root.appendNode("scm")
scm.appendNode("connection", "scm:git:git@github.com:mozilla/rhino.git")
scm.appendNode("developerConnection", "scm:git:git@github.com:mozilla/rhino.git")
scm.appendNode("url", "git@github.com:mozilla/rhino.git")
def o = root.appendNode("organization")
o.appendNode("name", "The Mozilla Foundation")
o.appendNode("url", "http://www.mozilla.org")
}
from components.java
artifact sourceJar {
classifier "sources"
}
artifact javadocJar {
classifier "javadoc"
}
}
rhinoruntime(MavenPublication) {
groupId 'org.mozilla'
artifactId 'rhino-runtime'
artifacts = [runtimeJar, runtimeSourceJar, runtimeJavadocJar]
pom.withXml {
def root = asNode()
root.appendNode('description', """
Rhino is an open-source implementation of JavaScript written entirely in Java.
It is typically embedded into Java applications to provide scripting to end users.
""")
root.appendNode("url", "https://developer.mozilla.org/en/Rhino")
def p = root.appendNode("parent")
p.appendNode("groupId", "org.sonatype.oss")
p.appendNode("artifactId", "oss-parent")
p.appendNode("version", "7")
def l = root.appendNode("licenses").appendNode("license")
l.appendNode("name", "Mozilla Public License, Version 2.0")
l.appendNode("url", "http://www.mozilla.org/MPL/2.0/index.txt")
def scm = root.appendNode("scm")
scm.appendNode("connection", "scm:git:git@github.com:mozilla/rhino.git")
scm.appendNode("developerConnection", "scm:git:git@github.com:mozilla/rhino.git")
scm.appendNode("url", "git@github.com:mozilla/rhino.git")
def o = root.appendNode("organization")
o.appendNode("name", "The Mozilla Foundation")
o.appendNode("url", "http://www.mozilla.org")
}
}
rhinoengine(MavenPublication) {
groupId 'org.mozilla'
artifactId 'rhino-engine'
artifacts = [engineJar, engineSourceJar, engineJavadocJar]
pom.withXml {
def root = asNode()
root.appendNode('description', """
Rhino is an open-source implementation of JavaScript written entirely in Java.
It is typically embedded into Java applications to provide scripting to end users.
""")
root.appendNode("url", "https://developer.mozilla.org/en/Rhino")
def p = root.appendNode("parent")
p.appendNode("groupId", "org.sonatype.oss")
p.appendNode("artifactId", "oss-parent")
p.appendNode("version", "7")
def l = root.appendNode("licenses").appendNode("license")
l.appendNode("name", "Mozilla Public License, Version 2.0")
l.appendNode("url", "http://www.mozilla.org/MPL/2.0/index.txt")
def scm = root.appendNode("scm")
scm.appendNode("connection", "scm:git:git@github.com:mozilla/rhino.git")
scm.appendNode("developerConnection", "scm:git:git@github.com:mozilla/rhino.git")
scm.appendNode("url", "git@github.com:mozilla/rhino.git")
def o = root.appendNode("organization")
o.appendNode("name", "The Mozilla Foundation")
o.appendNode("url", "http://www.mozilla.org")
def deps = root.appendNode("dependencies")
def rhino = deps.appendNode("dependency")
rhino.appendNode("groupId", "org.mozilla")
rhino.appendNode("artifactId", "rhino")
rhino.appendNode("version", getVersion())
}
}
}
if (project.hasProperty("mavenPassword")) {
repositories {
maven {
credentials {
username mavenUser
password mavenPassword
}
if (project.version.endsWith('-SNAPSHOT')) {
url mavenSnapshotRepo
} else {
url mavenReleaseRepo
}
}
}
}
}
spotbugs {
effort = "less"
reportLevel = "medium"
excludeFilter = file("./spotbugs-exclude.xml")
}
jacocoTestReport.dependsOn test
jacocoTestReport {
reports {
html.destination file("${buildDir}/jacocoHtml")
}
}
checkstyle {
configFile = file("${projectDir}/checkstyle.xml")
sourceSets = [ project.sourceSets.main ]
}
distributions {
main {
contents {
from(sourceSets.main.java) {
exclude 'man'
into 'rhino' + project.version + '/src'
}
from(sourceSets.main.resources) {
exclude '**/*.java'
into 'rhino' + project.version + '/src'
}
from(javadoc.destinationDir) {
into 'rhino' + project.version + '/docs'
}
from(jar.outputs.files) {
into 'rhino' + project.version + '/lib'
}
from(sourceSets.main.allSource) {
include 'man/*.1'
into 'rhino' + project.version
}
from(file(".")) {
include '*.txt', '*.md', 'build.gradle', 'build.properties', 'gradle.properties',
'gradle/**', 'gradlew'
into 'rhino' + project.version
}
into "/"
}
}
}
distZip.dependsOn javadoc, jar, sourceJar, runtimeSourceJar