/* * Licensed to Elasticsearch under one or more contributor * license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright * ownership. Elasticsearch licenses this file to you under * the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ apply plugin: 'elasticsearch.build' apply plugin: 'application' mainClassName = 'org.openjdk.jmh.Main' // Not published so no need to assemble tasks.remove(assemble) build.dependsOn.remove('assemble') archivesBaseName = 'elasticsearch-benchmarks' test.enabled = false dependencies { compile("org.elasticsearch:elasticsearch:${version}") { // JMH ships with the conflicting version 4.6. This prevents us from using jopt-simple in benchmarks (which should be ok) but allows // us to invoke the JMH uberjar as usual. exclude group: 'net.sf.jopt-simple', module: 'jopt-simple' } compile "org.openjdk.jmh:jmh-core:$versions.jmh" compile "org.openjdk.jmh:jmh-generator-annprocess:$versions.jmh" // Dependencies of JMH runtime 'net.sf.jopt-simple:jopt-simple:4.6' runtime 'org.apache.commons:commons-math3:3.2' } compileJava.options.compilerArgs << "-Xlint:-cast,-deprecation,-rawtypes,-try,-unchecked,-processing" // enable the JMH's BenchmarkProcessor to generate the final benchmark classes // needs to be added separately otherwise Gradle will quote it and javac will fail compileJava.options.compilerArgs.addAll(["-processor", "org.openjdk.jmh.generators.BenchmarkProcessor"]) // classes generated by JMH can use all sorts of forbidden APIs but we have no influence at all and cannot exclude these classes forbiddenApisMain.enabled = false // No licenses for our benchmark deps (we don't ship benchmarks) dependencyLicenses.enabled = false dependenciesInfo.enabled = false thirdPartyAudit.excludes = [ // these classes intentionally use JDK internal API (and this is ok since the project is maintained by Oracle employees) 'org.openjdk.jmh.profile.AbstractHotspotProfiler', 'org.openjdk.jmh.profile.HotspotThreadProfiler', 'org.openjdk.jmh.profile.HotspotClassloadingProfiler', 'org.openjdk.jmh.profile.HotspotCompilationProfiler', 'org.openjdk.jmh.profile.HotspotMemoryProfiler', 'org.openjdk.jmh.profile.HotspotRuntimeProfiler', 'org.openjdk.jmh.util.Utils' ]