forked from ben-manes/caffeine
/
build.gradle
137 lines (117 loc) · 3.9 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
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'
}
main {
java.srcDir "${buildDir}/generated-sources/"
}
codeGen {
java.srcDir "${buildDir}/generated-sources/"
}
}
configurations {
javaAgent
}
idea.module {
scopes.PROVIDED.plus += [ configurations.javaPoetCompileClasspath ]
}
eclipse.classpath {
containers 'org.eclipse.buildship.core.gradleclasspathcontainer'
file {
whenMerged {
entries.findAll {
it instanceof SourceFolder && it.output == 'bin/codeGen'
}*.output = 'bin/main'
// Exclude module-info when compiling through Eclipse
def main = entries.find { it instanceof SourceFolder && it.path == 'src/main/java' }
main.excludes.add('module-info.java')
}
}
}
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.fastutil
testImplementation testLibraries.junit
testImplementation testLibraries.testng
testImplementation testLibraries.jctools
testImplementation libraries.commonsLang3
testImplementation testLibraries.guavaTestLib
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.elasticSearch
jmh libraries.concurrentlinkedhashmap
javaPoetImplementation libraries.guava
javaPoetImplementation libraries.javapoet
javaPoetImplementation libraries.commonsLang3
javaPoetImplementation libraries.googleJavaFormat
}
compileCodeGenJava {
gradle.taskGraph.whenReady {
enabled = gradle.taskGraph.hasTask('uploadArchives')
}
dependsOn compileJava
destinationDir = compileJava.destinationDir
classpath = sourceSets.main.runtimeClasspath + sourceSets.main.output
options.incremental = false
options.debug = false
}
jar.manifest {
attributes 'Bundle-SymbolicName': 'com.github.ben-manes.caffeine'
attributes 'Import-Package': ''
attributes 'Export-Package': [
'com.github.benmanes.caffeine',
'com.github.benmanes.caffeine.base',
'com.github.benmanes.caffeine.cache',
'com.github.benmanes.caffeine.cache.stats'].join(',')
attributes 'Automatic-Module-Name': 'com.github.benmanes.caffeine'
}
jar.dependsOn(compileCodeGenJava)
sonarqube {
properties {
property "sonar.exclusions", '**/NodeFactory.java, **/LocalCacheFactory.java'
}
}
task generateLocalCaches(type: JavaExec) {
main = 'com.github.benmanes.caffeine.cache.LocalCacheFactoryGenerator'
classpath = sourceSets.javaPoet.runtimeClasspath
args "${buildDir}/generated-sources/"
outputs.upToDateWhen { !tasks.compileJavaPoetJava.didWork }
outputs.dir "${buildDir}/generated-sources/"
outputs.cacheIf { true }
}
compileJava.dependsOn(generateLocalCaches)
sourcesJar.dependsOn(generateLocalCaches)
task generateNodes(type: JavaExec) {
main = 'com.github.benmanes.caffeine.cache.NodeFactoryGenerator'
classpath = sourceSets.javaPoet.runtimeClasspath
args "${buildDir}/generated-sources/"
outputs.upToDateWhen { !tasks.compileJavaPoetJava.didWork }
outputs.dir "${buildDir}/generated-sources/"
outputs.cacheIf { true }
}
compileJava.dependsOn(generateNodes)
sourcesJar.dependsOn(generateNodes)
task memoryOverhead(type: JavaExec, group: 'Benchmarks', description: 'Evaluates cache overhead') {
classpath sourceSets.jmh.runtimeClasspath
jvmArgs "-javaagent:${configurations.javaAgent.singleFile}"
main = 'com.github.benmanes.caffeine.cache.MemoryBenchmark'
}