forked from logstash-plugins/logstash-filter-geoip
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.gradle
123 lines (108 loc) · 5.15 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
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"
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()
}
dependencies {
compileOnly group: "org.apache.logging.log4j", name: "log4j-api", version: "2.6.2"
compileOnly group: "org.apache.logging.log4j", name: "log4j-core", version: "2.6.2"
compileOnly group: "com.maxmind.geoip2", name: "geoip2", version: "2.9.0"
compileOnly group: "com.maxmind.db", name: "maxmind-db", version: "1.2.2"
runtime group: "com.maxmind.geoip2", name: "geoip2", version: "2.9.0"
runtime group: "com.maxmind.db", name: "maxmind-db", version: "1.2.2"
testCompile group: 'junit', name: 'junit', version: '4.12'
testCompile group: "org.apache.logging.log4j", name: "log4j-api", version: "2.6.2"
testCompile group: "org.apache.logging.log4j", name: "log4j-core", version: "2.6.2"
testCompile group: 'org.jruby', name: 'jruby-complete', version: "1.7.26"
testCompile group: "com.maxmind.geoip2", name: "geoip2", version: "2.9.0"
testCompile group: "com.maxmind.db", name: "maxmind-db", version: "1.2.2"
testCompile fileTree(dir: logstashCoreGemPath, include: '**/*.jar')
compileOnly group: 'org.jruby', name: 'jruby-complete', version: "1.7.26"
compileOnly fileTree(dir: logstashCoreGemPath, include: '**/*.jar')
}
task rubyBootstrap << {
description "Try bundler"
def jruby = new org.jruby.embed.ScriptingContainer()
def paths = jruby.getLoadPaths()
paths.add("${projectDir}/lib".getStrings()[0])
jruby.setLoadPaths(paths)
jruby.getEnvironment().put("GEM_HOME", "${buildDir}/ruby".toString())
jruby.getEnvironment().put("GEM_SPEC_CACHE", "${buildDir}/cache".toString())
jruby.getEnvironment().put("GEM_PATH", "${buildDir}/ruby".toString())
jruby.runScriptlet(org.jruby.embed.PathType.ABSOLUTE, "${projectDir}/buildSrc/src/main/ruby/bootstrap.rb")
jruby.runScriptlet("bundler()")
}
task rubyTest(dependsOn: [rubyBootstrap, build]) << {
def jruby = new org.jruby.embed.ScriptingContainer()
def paths = jruby.getLoadPaths()
paths.add("${projectDir}/lib".getStrings()[0])
jruby.setLoadPaths(paths)
jruby.getEnvironment().put("GEM_HOME", "${buildDir}/ruby".toString())
jruby.getEnvironment().put("GEM_SPEC_CACHE", "${buildDir}/cache".toString())
jruby.getEnvironment().put("GEM_PATH", "${buildDir}/ruby".toString())
jruby.runScriptlet('require "jars"');
jruby.runScriptlet('require "./build/libs/logstash-filter-geoip.jar"');
jruby.runScriptlet("require 'rspec/core/runner'");
jruby.runScriptlet("require 'rspec'");
jruby.runScriptlet("RSpec::Core::Runner.run(['spec', '--fail-fast', '--order=rand:1'])");
}
task generateGemJarRequiresFile << {
File jars_file = file("lib/${project.name}_jars.rb")
jars_file.newWriter().withWriter { w ->
w << "# AUTOGENERATED BY THE GRADLE SCRIPT. DO NOT EDIT.\n\n"
w << "require \'jar_dependencies\'\n"
configurations.runtime.allDependencies.each {
w << "require_jar(\'${it.group}\', \'${it.name}\', \'${it.version}\')\n"
}
w << "require_jar(\'${project.group}\', \'${project.name}\', \'${project.version}\')\n"
}
}
task vendor << {
String vendorPathPrefix = "vendor/jar-dependencies"
configurations.runtime.allDependencies.each { dep ->
File f = configurations.runtime.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.name}/${project.version}/${project.name}-${project.version}.jar")
projectJarFile.mkdirs()
Files.copy(file("$buildDir/libs/${project.name}-${project.version}.jar").toPath(), projectJarFile.toPath(), REPLACE_EXISTING)
}
vendor.dependsOn(jar, generateGemJarRequiresFile)