This repository has been archived by the owner on Sep 10, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 20
/
build.gradle
212 lines (181 loc) · 7.02 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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
/*
* 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.
*/
///////////////////////////////////////////////////
// //
// Gradle Plugins //
// //
///////////////////////////////////////////////////
apply plugin: 'groovy'
apply plugin: 'java-library-distribution'
apply plugin: 'elasticsearch.build'
apply plugin: 'nebula.optional-base'
apply plugin: 'nebula.maven-base-publish'
apply plugin: 'nebula.maven-scm'
///////////////////////////////////////////////////
// //
// Dependency Details //
// //
///////////////////////////////////////////////////
/**
* Associate external dependencies with this project. Gradle only requires this step, and it does not require the
* {@code versions} and {@code externalDeps} {@code Map}s. I find that they make it much easier to eyeball what is
* happening as well as to find mistakes.
* <p>
* Where order does <em>not</em> matter for the dependencies, then they are sorted alphabetically.
*/
dependencies {
testCompile("org.elasticsearch.test:framework:${version}") {
// tests use the locally compiled version of core; don't try to reach out to Maven to find it
exclude group: 'org.elasticsearch', module: 'elasticsearch'
}
compile "org.elasticsearch:elasticsearch:${version}",
"org.codehaus.groovy:groovy-all:2.4.5:indy"
}
///////////////////////////////////////////////////
// //
// Project Details //
// //
///////////////////////////////////////////////////
// The minimum required Java version (this matches the Elasticsearch minimum Java version)
sourceCompatibility = 1.8
targetCompatibility = 1.8
// Project details
description = 'Official Groovy client for Elasticsearch'
///////////////////////////////////////////////////
// //
// Build Customization //
// //
///////////////////////////////////////////////////
/**
* Configure Groovy compilation.
*/
tasks.withType(GroovyCompile) {
// Enable the usage of invokedynamic instructions in compiled Groovy code
// NOTE: This requires the "indy" version of the Groovy jar to take effect
groovyOptions.optimizationOptions.indy = true
}
///////////////////////////////////////////////////
// //
// Artifact Publishing //
// //
///////////////////////////////////////////////////
File secretsConfiguration = file('secrets.gradle')
// If there is a secrets configuration file, then use it to overwrite properties
if (secretsConfiguration.exists()) {
// Meant to overwrite usernames/passwords and signing values
apply from: secretsConfiguration
}
/**
* Generate the Groovydoc jar on demand.
*/
task groovydocJar(type: Jar, dependsOn: groovydoc) {
classifier = 'groovydoc'
from groovydoc.destinationDir
}
/**
* Generate the test jar on demand.
* <p>
* The test jar is useful for creating integration tests written in Groovy. It will
* appropriately ignore Groovy-created memory. All tests must extend either
* {@code AbstractElasticsearchIntegrationTest} or {@code AbstractElasticsearchTestCase}.
*/
task testJar(type: Jar) {
classifier = 'tests'
from sourceSets.test.output
// Any abstract tests are used as the basis to build from
include '**/Abstract*'
// The Abstract tests need the GroovyTestSanitizer in order to avoid failing due to
// Groovy-created static memory
include '**/GroovyTestSanitizer*'
// Once it does the include, it leaves the empty directories, which are unwanted
includeEmptyDirs = false
}
/**
* Extra artifacts to publish along side the client jar.
*/
artifacts {
archives groovydocJar
archives sourcesJar
archives testJar
}
publishing {
publications {
nebula {
artifactId 'elasticsearch-groovy'
}
}
}
archivesBaseName = 'elasticsearch-groovy'
/**
* Sets up the publishing of the jars to a Maven repository.
* <p>
* Archives and the POM file must be signed for full releases. They are less strict with snapshot releases, but they
* should also be signed.
*/
/*
uploadArchives {
repositories {
mavenDeployer {
// sign the pom file
beforeDeployment {
signing.signPom(it)
}
// used to publish full releases
repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
authentication(userName: project.property('sonatypeUsername'), password: project.property('sonatypePassword'))
}
// used to publish snapshot dependencies
snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
authentication(userName: project.property('sonatypeUsername'), password: project.property('sonatypePassword'))
}
// property names containing a period (easily searchable within the POM via publishing scripts)
def pomProperties =
[ 'elasticsearch.version' : versions.elasticsearch,
'groovy.version' : versions.groovy,
'java.version.min' : versions.java,
'lucene.version' : versions.lucene ]
// Add other fields and values to the POM file
pom.project {
// root-level project details
name 'Elasticsearch Groovy Client'
packaging 'jar'
description project.description
url 'https://github.com/elastic/elasticsearch-groovy'
inceptionYear '2014'
// Source Control details (GitHub)
scm {
connection 'scm:git:[email protected]:elastic/elasticsearch-groovy.git'
developerConnection 'scm:git:[email protected]:elastic/elasticsearch-groovy.git'
url 'https://github.com/elastic/elasticsearch-groovy'
}
// Using Apache 2
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
distribution 'repo'
}
}
// Arbitrary key/values
properties pomProperties
}
}
}
}
*/