Как использовать JMH с gradle?
Я хочу использовать JMH, инструмент OpenJDK microbenchmark, с ш . Тем не менее, Im получает NPE при компиляции. С другой стороны, JMH работает при использовании от maven.
Я не публикую никаких build.gradle
as it is basic-применить плагин java и добавить зависимость от инструмента JHM (org.openjdk.jmh:jmh-core:0.2
).
Я пробовал что написано здесь без успеха.
что еще я должен сделать? Я думаю, что-то с установкой агента, но Я все еще не понимал.
исключения:
:compileJava
java.lang.NullPointerException
at org.openjdk.jmh.processor.internal.GenerateMicroBenchmarkProcessor.validMethodSignature(GenerateMicroBenchmarkProcessor.java:502)
2 ответов
в настоящее время вы можете просто использовать специальный плагин jmh-Gradle в плагин
Он требует минимальной конфигурации и позволяет запускать тесты JMH, а также создавать артефакт тестов
мой плохой, я пытался сравнить метод, который имеет аргумент-конечно, JMH не будет знать, что передать :) однажды, когда я создал метод void без аргументов, все сработало.
мой build.gradle
:
defaultTasks 'build'
apply plugin: 'java'
apply plugin: 'shadow'
buildscript {
repositories {
mavenCentral()
maven {
name 'Shadow'
url 'http://dl.bintray.com/content/johnrengelman/gradle-plugins'
}
}
dependencies {
classpath 'org.gradle.plugins:shadow:0.7.4'
}
}
jar {
manifest {
attributes 'Main-Class': 'org.openjdk.jmh.Main'
}
}
repositories {
mavenCentral()
}
build.doLast {
tasks.shadow.execute()
}
shadow {
outputFile = new File('build/libs/microbenchmarks.jar')
}
ext {
lib = [
... other dependencies...
jmh: 'org.openjdk.jmh:jmh-core:0.2'
]
}
dependencies {
compile lib... other dependencies...
compile lib.jmh
}
sourceCompatibility = 1.7
построить тесты и jar:
gw clean build
а затем запустите их с помощью:
java -jar build/libs/microbenchmarks.jar ".*" -wi 2 -i 10 -f 2 -t 16
обновление
из последних версий JMH вам также нужно будет добавить зависимость от:
org.openjdk.jmh:jmh-generator-annprocess:0.5.4
и вы можете использовать тени 0.8.