-
Notifications
You must be signed in to change notification settings - Fork 1.6k
/
build.gradle
141 lines (122 loc) · 4.2 KB
/
build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
import org.gradle.plugins.ide.eclipse.model.SourceFolder
apply from: "${rootDir}/gradle/jmh.gradle"
apply from: "${projectDir}/testing.gradle"
sourceSets {
javaPoet {
java.srcDir 'src/javaPoet/java'
}
codeGen {
java.srcDir "${buildDir}/generated-sources/local"
java.srcDir "${buildDir}/generated-sources/nodes"
}
}
configurations {
javaAgent
}
idea.module {
scopes.PROVIDED.plus += [ configurations.javaPoetCompileClasspath ]
}
eclipse.classpath.file.whenMerged {
entries.findAll { it instanceof SourceFolder && it.output == 'bin/codeGen' }*.output = 'bin/main'
}
plugins.withType(EclipsePlugin) {
project.eclipse.classpath.plusConfigurations += [ configurations.javaPoetCompileClasspath ]
}
dependencies {
api libraries.checkerAnnotations
api libraries.errorproneAnnotations
testImplementation libraries.joor
testImplementation libraries.ycsb
testImplementation libraries.guava
testImplementation libraries.picocli
testImplementation libraries.fastutil
testImplementation testLibraries.junit
testImplementation testLibraries.testng
testImplementation testLibraries.jctools
testImplementation testLibraries.lincheck
testImplementation libraries.commonsLang3
testImplementation testLibraries.slf4jTest
testImplementation testLibraries.guavaTestLib
testImplementation testLibraries.commonsCollectionsTests
testImplementation testLibraries.eclipseCollectionsTestLib
javaAgent libraries.jamm
jmh libraries.jamm
jmh libraries.guava
jmh libraries.tcache
jmh libraries.cache2k
jmh libraries.ehcache3
jmh libraries.fastutil
jmh libraries.slf4jNop
jmh libraries.flipTables
jmh libraries.jackrabbit
jmh libraries.expiringMap
jmh libraries.concurrentlinkedhashmap
javaPoetImplementation libraries.guava
javaPoetImplementation libraries.javapoet
javaPoetImplementation libraries.commonsLang3
javaPoetImplementation libraries.googleJavaFormat
}
tasks.named('compileCodeGenJava').configure {
classpath = sourceSets.main.runtimeClasspath + sourceSets.main.output
options.debug = false
dependsOn compileJava
doFirst {
options.compilerArgs += [ '--module-path', classpath.asPath ]
}
}
tasks.named('jar').configure {
from sourceSets.main.output + sourceSets.codeGen.output
dependsOn compileCodeGenJava
manifest {
attributes 'Bundle-SymbolicName': 'com.github.ben-manes.caffeine'
attributes 'Import-Package': ''
attributes 'Export-Package': [
'com.github.benmanes.caffeine',
'com.github.benmanes.caffeine.cache',
'com.github.benmanes.caffeine.cache.stats'].join(',')
attributes 'Automatic-Module-Name': 'com.github.benmanes.caffeine'
}
}
def generateLocalCaches = tasks.register('generateLocalCaches', JavaExec) {
mainClass = 'com.github.benmanes.caffeine.cache.LocalCacheFactoryGenerator'
classpath = sourceSets.javaPoet.runtimeClasspath
outputs.dir "${buildDir}/generated-sources/local"
args "${buildDir}/generated-sources/local"
inputs.files sourceSets.javaPoet.output
dependsOn compileJavaPoetJava
outputs.cacheIf { true }
}
def generateNodes = tasks.register('generateNodes', JavaExec) {
mainClass = 'com.github.benmanes.caffeine.cache.NodeFactoryGenerator'
classpath = sourceSets.javaPoet.runtimeClasspath
outputs.dir "${buildDir}/generated-sources/nodes"
args "${buildDir}/generated-sources/nodes"
inputs.files sourceSets.javaPoet.output
dependsOn compileJavaPoetJava
outputs.cacheIf { true }
}
tasks.named('compileJavaPoetJava').configure {
finalizedBy generateLocalCaches, generateNodes
}
tasks.named('compileJava').configure {
dependsOn generateLocalCaches, generateNodes
finalizedBy compileCodeGenJava
}
tasks.named('compileTestJava').configure {
dependsOn compileCodeGenJava
dependsOn(jar)
}
tasks.named('sourcesJar').configure {
dependsOn generateLocalCaches, generateNodes
}
tasks.javadoc.mustRunAfter(compileCodeGenJava)
tasks.withType(Test).configureEach {
classpath += sourceSets.codeGen.runtimeClasspath
}
tasks.register('memoryOverhead', JavaExec) {
group = 'Benchmarks'
description = 'Evaluates cache overhead'
classpath sourceSets.jmh.runtimeClasspath
jvmArgs "-javaagent:${configurations.javaAgent.singleFile}"
mainClass = 'com.github.benmanes.caffeine.cache.MemoryBenchmark'
}