PageRenderTime 52ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/build.gradle

http://github.com/mozilla/rhino
Gradle | 473 lines | 408 code | 63 blank | 2 comment | 0 complexity | 08d146a6f47f4db8e897202d7fb7e463 MD5 | raw file
  1. plugins {
  2. id 'java'
  3. id 'idea'
  4. id 'eclipse'
  5. id 'maven-publish'
  6. id 'signing'
  7. id 'jacoco'
  8. id 'distribution'
  9. id 'checkstyle'
  10. id 'com.diffplug.spotless' version "5.12.1"
  11. id 'com.github.spotbugs' version "4.7.1"
  12. }
  13. tasks.withType(JavaCompile) {
  14. sourceCompatibility = 1.8
  15. targetCompatibility = 1.8
  16. options.encoding = "UTF-8"
  17. options.compilerArgs = [ "-Xlint:deprecation,unchecked" ]
  18. }
  19. compileTestJava {
  20. options.compilerArgs = [ ]
  21. }
  22. repositories {
  23. mavenCentral()
  24. }
  25. sourceSets {
  26. main {
  27. java {
  28. srcDirs 'src', 'toolsrc', 'xmlimplsrc'
  29. }
  30. resources {
  31. srcDirs 'src', 'toolsrc'
  32. exclude "build.xml"
  33. exclude "manifest"
  34. }
  35. }
  36. test {
  37. java {
  38. srcDirs "testsrc", 'examples'
  39. exclude 'tests/**'
  40. }
  41. resources {
  42. srcDirs "testsrc"
  43. }
  44. }
  45. jmh {
  46. java {
  47. srcDirs "benchmarks"
  48. }
  49. compileClasspath += sourceSets.test.runtimeClasspath
  50. runtimeClasspath += sourceSets.test.runtimeClasspath
  51. }
  52. }
  53. dependencies {
  54. testImplementation "junit:junit:4.13.2"
  55. testImplementation "org.yaml:snakeyaml:1.28"
  56. testImplementation "javax.xml.soap:javax.xml.soap-api:1.4.0"
  57. jmhImplementation project
  58. jmhImplementation 'org.openjdk.jmh:jmh-core:1.27'
  59. jmhAnnotationProcessor 'org.openjdk.jmh:jmh-generator-annprocess:1.27'
  60. }
  61. test {
  62. useJUnit()
  63. exclude "**/benchmarks/**"
  64. jvmArgs += '-Xss1280k'
  65. if (JavaVersion.current() > JavaVersion.VERSION_1_8) {
  66. jvmArgs += ['--add-opens', 'java.desktop/javax.swing.table=ALL-UNNAMED']
  67. }
  68. jacoco.excludes = ['**/testsrc_tests_ecma_3_RegExp_perlstress*']
  69. systemProperty 'java.awt.headless', 'true'
  70. systemProperty 'mozilla.js.tests', 'testsrc/tests'
  71. systemProperty 'mozilla.js.tests.timeout', 60000
  72. systemProperty 'user.language', 'en'
  73. systemProperty 'user.country', 'US'
  74. systemProperty 'user.timezone', 'America/Los_Angeles'
  75. systemProperty 'file.encoding', 'UTF-8'
  76. if (System.getProperty('quick') != null) {
  77. systemProperty 'TEST_OPTLEVEL', -1
  78. } else if (System.getProperty('optLevel')) {
  79. systemProperty 'TEST_OPTLEVEL', System.getProperty('optLevel')
  80. }
  81. systemProperty 'test262properties', System.getProperty('test262properties')
  82. if (System.getProperty('updateTest262properties') != null) {
  83. systemProperty 'updateTest262properties', System.getProperty('updateTest262properties')
  84. }
  85. maxHeapSize = "1g"
  86. testLogging.showStandardStreams = true
  87. // Many tests do not clean up contexts properly. This makes the tests much
  88. // more resilient at the expense of performance.
  89. forkEvery = 1
  90. maxParallelForks = 64
  91. }
  92. task sunSpiderBenchmark(type: JavaExec) {
  93. classpath = sourceSets.jmh.runtimeClasspath
  94. mainClass = 'org.openjdk.jmh.Main'
  95. args '-f', '1', '-bm', 'avgt', '-tu', 'us', 'SunSpider'
  96. }
  97. task v8Benchmark(type: JavaExec) {
  98. classpath = sourceSets.jmh.runtimeClasspath
  99. mainClass = 'org.openjdk.jmh.Main'
  100. args '-f', '1', '-i', '10', '-bm', 'avgt', '-tu', 'us', 'V8'
  101. }
  102. task testBenchmark() {}
  103. testBenchmark.dependsOn sunSpiderBenchmark
  104. testBenchmark.dependsOn v8Benchmark
  105. task microBenchmark(type: JavaExec, description: 'JMH micro benchmark') {
  106. def benchmark = System.getProperty('benchmark')
  107. if (benchmark == null) {
  108. benchmark = "MathBenchmark"
  109. }
  110. classpath = sourceSets.jmh.runtimeClasspath
  111. mainClass = 'org.openjdk.jmh.Main'
  112. args '-f', '1', '-bm', 'avgt', '-tu', 'ns', '-r', '5', benchmark
  113. }
  114. task listBenchmarks(type: JavaExec, description: 'JMH benchmarks') {
  115. classpath = sourceSets.jmh.runtimeClasspath
  116. mainClass = 'org.openjdk.jmh.Main'
  117. args '-lp'
  118. }
  119. task jmhHelp(type: JavaExec, description: 'JMH benchmarks') {
  120. classpath = sourceSets.jmh.runtimeClasspath
  121. mainClass = 'org.openjdk.jmh.Main'
  122. args '-help'
  123. }
  124. idea {
  125. module {
  126. excludeDirs += file('testsrc/tests/src')
  127. excludeDirs += file('buildGradle')
  128. excludeDirs += file('build')
  129. excludeDirs += file('.idea')
  130. excludeDirs += file('lib')
  131. }
  132. }
  133. task runtimeJar(type: Jar) {
  134. dependsOn compileJava
  135. archiveBaseName = 'rhino-runtime'
  136. from sourceSets.main.output
  137. excludes = ["org/mozilla/javascript/tools", "org/mozilla/javascript/engine/**", "META-INF/services/**"]
  138. manifest {
  139. attributes(
  140. "Manifest-Version": "1.0",
  141. "Implementation-Version": project.version,
  142. "Implementation-Title": "Mozilla Rhino",
  143. "Implementation-Vendor": "Mozilla Foundation",
  144. "Implementation-URL": "http://www.mozilla.org/rhino",
  145. "Built-Date": new Date().format("yyyy-MM-dd"),
  146. "Built-Time": new Date().format("HH:mm:ss"),
  147. "Bundle-ManifestVersion": "2",
  148. "Bundle-SymbolicName": "org.mozilla.rhino-runtime",
  149. "Bundle-Version": project.version.replaceAll("-.*", ""),
  150. "Export-Package": "org.mozilla.javascript,org.mozilla.javascript.ast,org.mozilla.javascript.annotations"
  151. )
  152. }
  153. }
  154. task engineJar(type: Jar) {
  155. dependsOn compileJava
  156. archiveBaseName = 'rhino-engine'
  157. from (sourceSets.main.output) {
  158. include 'org/mozilla/javascript/engine/**'
  159. include 'META-INF/services/**'
  160. }
  161. manifest {
  162. attributes(
  163. "Manifest-Version": "1.0",
  164. "Implementation-Version": project.version,
  165. "Implementation-Title": "Mozilla Rhino ScriptEngine",
  166. "Implementation-Vendor": "Mozilla Foundation",
  167. "Implementation-URL": "http://www.mozilla.org/rhino",
  168. "Built-Date": new Date().format("yyyy-MM-dd"),
  169. "Built-Time": new Date().format("HH:mm:ss"),
  170. "Automatic-Module-Name": "org.mozilla.rhino.engine"
  171. )
  172. }
  173. }
  174. jar {
  175. dependsOn runtimeJar, engineJar
  176. from "LICENSE.txt"
  177. excludes = ["org/mozilla/javascript/engine/**", "META-INF/services/**"]
  178. manifest {
  179. attributes(
  180. "Manifest-Version": "1.0",
  181. "Main-Class": "org.mozilla.javascript.tools.shell.Main",
  182. "Implementation-Version": project.version,
  183. "Implementation-Title": "Mozilla Rhino",
  184. "Implementation-Vendor": "Mozilla Foundation",
  185. "Implementation-URL": "http://www.mozilla.org/rhino",
  186. "Built-Date": new Date().format("yyyy-MM-dd"),
  187. "Built-Time": new Date().format("HH:mm:ss"),
  188. "Automatic-Module-Name": "org.mozilla.rhino",
  189. "Bundle-ManifestVersion": "2",
  190. "Bundle-SymbolicName": "org.mozilla.rhino",
  191. "Bundle-Version": project.version.replaceAll("-.*", ""),
  192. "Export-Package": "org.mozilla.javascript,org.mozilla.javascript.ast,org.mozilla.javascript.annotations"
  193. )
  194. }
  195. }
  196. javadoc {
  197. options.addBooleanOption("-allow-script-in-comments", true)
  198. options.addStringOption('Xdoclint:html', '-quiet')
  199. }
  200. task javadocJar(type: Jar) {
  201. classifier = 'javadoc'
  202. from javadoc
  203. }
  204. task runtimeJavadocJar(type: Jar) {
  205. classifier = 'javadoc'
  206. from javadoc
  207. exclude 'org/mozilla/javascript/tools', 'org/mozilla/javascript/engine'
  208. }
  209. task engineJavadocJar(type: Jar) {
  210. classifier = 'javadoc'
  211. from javadoc
  212. include 'org/mozilla/javascript/engine/**'
  213. }
  214. task sourceJar(type: Jar) {
  215. from sourceSets.main.allJava
  216. }
  217. task runtimeSourceJar(type: Jar) {
  218. classifier 'sources'
  219. from sourceSets.main.allJava
  220. exclude 'org/mozilla/javascript/tools', 'org/mozilla/javascript/engine'
  221. }
  222. task engineSourceJar(type: Jar) {
  223. classifier 'sources'
  224. from sourceSets.main.allJava
  225. include 'org/mozilla/javascript/engine/**'
  226. }
  227. publishing {
  228. publications {
  229. rhino(MavenPublication) {
  230. groupId 'org.mozilla'
  231. artifactId 'rhino'
  232. pom.withXml {
  233. def root = asNode()
  234. root.appendNode('description', """
  235. Rhino is an open-source implementation of JavaScript written entirely in Java.
  236. It is typically embedded into Java applications to provide scripting to end users.
  237. """)
  238. root.appendNode("url", "https://developer.mozilla.org/en/Rhino")
  239. def p = root.appendNode("parent")
  240. p.appendNode("groupId", "org.sonatype.oss")
  241. p.appendNode("artifactId", "oss-parent")
  242. p.appendNode("version", "7")
  243. def l = root.appendNode("licenses").appendNode("license")
  244. l.appendNode("name", "Mozilla Public License, Version 2.0")
  245. l.appendNode("url", "http://www.mozilla.org/MPL/2.0/index.txt")
  246. def scm = root.appendNode("scm")
  247. scm.appendNode("connection", "scm:git:git@github.com:mozilla/rhino.git")
  248. scm.appendNode("developerConnection", "scm:git:git@github.com:mozilla/rhino.git")
  249. scm.appendNode("url", "git@github.com:mozilla/rhino.git")
  250. def o = root.appendNode("organization")
  251. o.appendNode("name", "The Mozilla Foundation")
  252. o.appendNode("url", "http://www.mozilla.org")
  253. }
  254. from components.java
  255. artifact sourceJar {
  256. classifier "sources"
  257. }
  258. artifact javadocJar {
  259. classifier "javadoc"
  260. }
  261. }
  262. rhinoruntime(MavenPublication) {
  263. groupId 'org.mozilla'
  264. artifactId 'rhino-runtime'
  265. artifacts = [runtimeJar, runtimeSourceJar, runtimeJavadocJar]
  266. pom.withXml {
  267. def root = asNode()
  268. root.appendNode('description', """
  269. Rhino is an open-source implementation of JavaScript written entirely in Java.
  270. It is typically embedded into Java applications to provide scripting to end users.
  271. """)
  272. root.appendNode("url", "https://developer.mozilla.org/en/Rhino")
  273. def p = root.appendNode("parent")
  274. p.appendNode("groupId", "org.sonatype.oss")
  275. p.appendNode("artifactId", "oss-parent")
  276. p.appendNode("version", "7")
  277. def l = root.appendNode("licenses").appendNode("license")
  278. l.appendNode("name", "Mozilla Public License, Version 2.0")
  279. l.appendNode("url", "http://www.mozilla.org/MPL/2.0/index.txt")
  280. def scm = root.appendNode("scm")
  281. scm.appendNode("connection", "scm:git:git@github.com:mozilla/rhino.git")
  282. scm.appendNode("developerConnection", "scm:git:git@github.com:mozilla/rhino.git")
  283. scm.appendNode("url", "git@github.com:mozilla/rhino.git")
  284. def o = root.appendNode("organization")
  285. o.appendNode("name", "The Mozilla Foundation")
  286. o.appendNode("url", "http://www.mozilla.org")
  287. }
  288. }
  289. rhinoengine(MavenPublication) {
  290. groupId 'org.mozilla'
  291. artifactId 'rhino-engine'
  292. artifacts = [engineJar, engineSourceJar, engineJavadocJar]
  293. pom.withXml {
  294. def root = asNode()
  295. root.appendNode('description', """
  296. Rhino is an open-source implementation of JavaScript written entirely in Java.
  297. It is typically embedded into Java applications to provide scripting to end users.
  298. """)
  299. root.appendNode("url", "https://developer.mozilla.org/en/Rhino")
  300. def p = root.appendNode("parent")
  301. p.appendNode("groupId", "org.sonatype.oss")
  302. p.appendNode("artifactId", "oss-parent")
  303. p.appendNode("version", "7")
  304. def l = root.appendNode("licenses").appendNode("license")
  305. l.appendNode("name", "Mozilla Public License, Version 2.0")
  306. l.appendNode("url", "http://www.mozilla.org/MPL/2.0/index.txt")
  307. def scm = root.appendNode("scm")
  308. scm.appendNode("connection", "scm:git:git@github.com:mozilla/rhino.git")
  309. scm.appendNode("developerConnection", "scm:git:git@github.com:mozilla/rhino.git")
  310. scm.appendNode("url", "git@github.com:mozilla/rhino.git")
  311. def o = root.appendNode("organization")
  312. o.appendNode("name", "The Mozilla Foundation")
  313. o.appendNode("url", "http://www.mozilla.org")
  314. def deps = root.appendNode("dependencies")
  315. def rhino = deps.appendNode("dependency")
  316. rhino.appendNode("groupId", "org.mozilla")
  317. rhino.appendNode("artifactId", "rhino")
  318. rhino.appendNode("version", getVersion())
  319. }
  320. }
  321. }
  322. if (project.hasProperty("mavenPassword")) {
  323. repositories {
  324. maven {
  325. credentials {
  326. username mavenUser
  327. password mavenPassword
  328. }
  329. if (project.version.endsWith('-SNAPSHOT')) {
  330. url mavenSnapshotRepo
  331. } else {
  332. url mavenReleaseRepo
  333. }
  334. }
  335. }
  336. }
  337. }
  338. signing {
  339. useGpgCmd()
  340. sign publishing.publications.rhino
  341. sign publishing.publications.rhinoengine
  342. sign publishing.publications.rhinoruntime
  343. }
  344. spotbugs {
  345. effort = "less"
  346. reportLevel = "medium"
  347. excludeFilter = file("./spotbugs-exclude.xml")
  348. }
  349. spotless {
  350. ratchetFrom 'code-formatting-required'
  351. java {
  352. googleJavaFormat().aosp()
  353. }
  354. }
  355. if (JavaVersion.current() > JavaVersion.VERSION_15
  356. && (!System.properties.containsKey('org.gradle.jvmargs')
  357. || !System.properties.get('org.gradle.jvmargs').contains('com.sun.tools.javac.api'))
  358. && (!project.hasProperty('org.gradle.jvmargs')
  359. || !project.property('org.gradle.jvmargs').contains('com.sun.tools.javac.api'))) {
  360. tasks.named('check') {
  361. doFirst {
  362. logger.warn('WARNING: spotless plugin removed from check due to bug, ' + \
  363. 'see README for a workaround when building with Java 16+.')
  364. }
  365. }
  366. spotless.enforceCheck false
  367. }
  368. jacocoTestReport {
  369. dependsOn test
  370. reports {
  371. csv.required = true
  372. html.required = true
  373. }
  374. }
  375. checkstyle {
  376. configFile = file("${projectDir}/checkstyle.xml")
  377. sourceSets = [ project.sourceSets.main ]
  378. }
  379. distributions {
  380. main {
  381. contents {
  382. from(sourceSets.main.java) {
  383. exclude 'man'
  384. into 'rhino' + project.version + '/src'
  385. }
  386. from(sourceSets.main.resources) {
  387. exclude '**/*.java'
  388. into 'rhino' + project.version + '/src'
  389. }
  390. from(javadoc.destinationDir) {
  391. into 'rhino' + project.version + '/docs'
  392. }
  393. from(jar.outputs.files) {
  394. into 'rhino' + project.version + '/lib'
  395. }
  396. from(sourceSets.main.allSource) {
  397. include 'man/*.1'
  398. into 'rhino' + project.version
  399. }
  400. from(file(".")) {
  401. include '*.txt', '*.md', 'build.gradle', 'build.properties', 'gradle.properties',
  402. 'gradle/**', 'gradlew'
  403. into 'rhino' + project.version
  404. }
  405. into "/"
  406. }
  407. }
  408. }
  409. distTar.dependsOn javadoc, jar
  410. distZip.dependsOn javadoc, jar, sourceJar, runtimeSourceJar