123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- import org.elasticsearch.gradle.info.BuildParams
- /*
- * 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'
- assemble.enabled = false
- archivesBaseName = 'elasticsearch-benchmarks'
- test.enabled = false
- dependencies {
- api( project(":server")) {
- // 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'
- }
- api "org.openjdk.jmh:jmh-core:$versions.jmh"
- annotationProcessor "org.openjdk.jmh:jmh-generator-annprocess:$versions.jmh"
- // Dependencies of JMH
- runtimeOnly 'net.sf.jopt-simple:jopt-simple:4.6'
- runtimeOnly 'org.apache.commons:commons-math3:3.2'
- }
- // 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"])
- run.executable = "${BuildParams.runtimeJavaHome}/bin/java"
- // classes generated by JMH can use all sorts of forbidden APIs but we have no influence at all and cannot exclude these classes
- disableTasks('forbiddenApisMain')
- // No licenses for our benchmark deps (we don't ship benchmarks)
- tasks.named("dependencyLicenses").configure { it.enabled = false }
- dependenciesInfo.enabled = false
- thirdPartyAudit.ignoreViolations(
- // 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'
- )
- spotless {
- java {
- // IDEs can sometimes run annotation processors that leave files in
- // here, causing Spotless to complain. Even though this path ought not
- // to exist, exclude it anyway in order to avoid spurious failures.
- targetExclude 'src/main/generated/**/*.java'
- }
- }
|