forked from logstash-plugins/logstash-filter-geoip
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.gradle
121 lines (104 loc) · 4.56 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
import de.undercouch.gradle.tasks.download.Download
/*
* 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: "java"
apply plugin: "distribution"
apply plugin: "idea"
// TODO(sissel): Move this to a file shared by the gemspec.
group "org.logstash.filters"
version "6.0.0"
project.archivesBaseName = "logstash-filter-geoip"
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
import java.nio.file.Files
import static java.nio.file.StandardCopyOption.REPLACE_EXISTING
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath group: 'org.jruby', name: 'jruby-complete', version: "1.7.26"
classpath 'de.undercouch:gradle-download-task:3.2.0'
}
}
repositories {
mavenCentral()
}
configurations {
geolite2
}
dependencies {
compileOnly group: "org.apache.logging.log4j", name: "log4j-api", version: "2.17.1"
compileOnly group: "org.apache.logging.log4j", name: "log4j-core", version: "2.17.1"
compileOnly group: "com.maxmind.geoip2", name: "geoip2", version: "2.9.0"
compileOnly group: "com.maxmind.db", name: "maxmind-db", version: "1.2.2"
compileOnly group: 'org.jruby', name: 'jruby-complete', version: "1.7.26"
compileOnly fileTree(dir: logstashCoreGemPath, include: '**/*.jar')
runtimeOnly group: "com.maxmind.geoip2", name: "geoip2", version: "2.9.0"
runtimeOnly group: "com.maxmind.db", name: "maxmind-db", version: "1.2.2"
testImplementation group: 'junit', name: 'junit', version: '4.12'
testImplementation group: "org.apache.logging.log4j", name: "log4j-api", version: "2.17.1"
testImplementation group: "org.apache.logging.log4j", name: "log4j-core", version: "2.17.1"
testImplementation group: 'org.jruby', name: 'jruby-complete', version: "1.7.26"
testImplementation group: "com.maxmind.geoip2", name: "geoip2", version: "2.9.0"
testImplementation group: "com.maxmind.db", name: "maxmind-db", version: "1.2.2"
testImplementation fileTree(dir: logstashCoreGemPath, include: '**/*.jar')
geolite2('org.elasticsearch:geolite2-databases:20191119') {
transitive = false
}
}
task generateGemJarRequiresFile {
doLast {
File jars_file = file("lib/${project.archivesBaseName}_jars.rb")
jars_file.newWriter().withWriter { w ->
w << "# AUTOGENERATED BY THE GRADLE SCRIPT. DO NOT EDIT.\n\n"
w << "require \'jar_dependencies\'\n"
configurations.runtimeClasspath.allDependencies.each {
w << "require_jar(\'${it.group}\', \'${it.name}\', \'${it.version}\')\n"
}
w << "require_jar(\'${project.group}\', \'${project.archivesBaseName}\', \'${project.version}\')\n"
}
}
}
task vendor {
doLast {
String vendorPathPrefix = "vendor/jar-dependencies"
configurations.runtimeClasspath.allDependencies.each { dep ->
File f = configurations.runtimeClasspath.filter { it.absolutePath.contains("${dep.group}/${dep.name}/${dep.version}") }.singleFile
String groupPath = dep.group.replaceAll('\\.', '/')
File newJarFile = file("${vendorPathPrefix}/${groupPath}/${dep.name}/${dep.version}/${dep.name}-${dep.version}.jar")
newJarFile.mkdirs()
Files.copy(f.toPath(), newJarFile.toPath(), REPLACE_EXISTING)
}
String projectGroupPath = project.group.replaceAll('\\.', '/')
File projectJarFile = file("${vendorPathPrefix}/${projectGroupPath}/${project.archivesBaseName}/${project.version}/${project.archivesBaseName}-${project.version}.jar")
projectJarFile.mkdirs()
Files.copy(file("$buildDir/libs/${project.archivesBaseName}-${project.version}.jar").toPath(), projectJarFile.toPath(), REPLACE_EXISTING)
}
}
// extract database from maven dependency jar
task unzip(type: Copy) {
def outputDir = file("vendor")
from(zipTree(configurations.geolite2.singleFile)) {
include "GeoLite2-ASN.mmdb"
include "GeoLite2-City.mmdb"
}
into outputDir
}
vendor.dependsOn(jar, generateGemJarRequiresFile, unzip)