1
+
2
+ buildscript {
3
+ repositories {
4
+ maven {
5
+ url ' https://plugins.gradle.org/m2/'
6
+ }
7
+ }
8
+ dependencies {
9
+ classpath ' com.github.jengelman.gradle.plugins:shadow:2.0.2'
10
+ }
11
+ }
12
+
1
13
apply plugin : ' elasticsearch.build'
2
14
apply plugin : ' nebula.maven-base-publish'
3
15
apply plugin : ' nebula.maven-scm'
16
+ apply plugin : ' com.github.johnrengelman.shadow'
4
17
5
18
description = ' JDBC driver for Elasticsearch'
19
+ archivesBaseName = " x-pack-sql-jdbc"
6
20
7
21
forbiddenApisMain {
8
22
// does not depend on core, so only jdk and http signatures should be checked
9
23
signaturesURLs = [this . class. getResource(' /forbidden/jdk-signatures.txt' )]
10
24
}
11
25
12
- /*
13
- * Bundle as many of our dependencies as we can get away with into the jar.
14
- * We can't currently bundle *all* dependencies into the jar, but we'd like
15
- * to avoid publishing the sql shared libraries if possible. This allows that.
16
- *
17
- * It is possible to use configure this bundling in a bunch of different ways
18
- * but this particular way generates a pom that doesn't declare the bundled
19
- * dependencies as dependencies. Which is a good thing because we don't publish
20
- * them and we don't want consumers to get two copies of them.
21
- *
22
- * We'd *like* to shade these dependencies, at least ones like jackson which we
23
- * know that we can't remove entirely. But for now something like this is
24
- * simpler.
25
- */
26
- configurations {
27
- bundled
28
- }
29
- sourceSets {
30
- main {
31
- compileClasspath + = configurations. bundled
32
- }
33
- test {
34
- compileClasspath + = configurations. bundled
35
- }
36
- }
37
- javadoc {
38
- classpath + = configurations. bundled
39
- }
40
- jar {
41
- from({configurations. bundled. collect { it. isDirectory() ? it : zipTree(it) }}) {
42
- // We don't need the META-INF from the things we bundle. For now.
43
- exclude ' META-INF/*'
44
- }
45
- }
46
-
47
26
dependencies {
48
-
49
- // Eclipse doesn't know how to deal with these bundled deependencies so make them compile
50
- // dependencies if we are running in Eclipse
51
- if (isEclipse) {
52
- compile (xpackProject(' plugin:sql:sql-shared-client' )) {
53
- transitive = false
54
- }
55
- compile (xpackProject(' plugin:sql:sql-shared-proto' )) {
56
- transitive = false
57
- }
58
- } else {
59
- bundled (xpackProject(' plugin:sql:sql-shared-client' )) {
60
- transitive = false
61
- }
62
- bundled (xpackProject(' plugin:sql:sql-shared-proto' )) {
63
- transitive = false
64
- }
27
+ compile (xpackProject(' plugin:sql:sql-shared-client' )) {
28
+ transitive = false
29
+ }
30
+ compile (xpackProject(' plugin:sql:sql-shared-proto' )) {
31
+ transitive = false
65
32
}
66
33
compile (project(' :libs:x-content' )) {
67
34
transitive = false
68
35
}
69
36
compile project(' :libs:core' )
70
37
runtime " com.fasterxml.jackson.core:jackson-core:${ versions.jackson} "
71
-
72
38
testCompile " org.elasticsearch.test:framework:${ version} "
73
39
}
74
40
@@ -82,23 +48,48 @@ dependencyLicenses {
82
48
ignoreSha ' elasticsearch'
83
49
}
84
50
85
- /*
86
- * Temporary zip file to make the jdbc driver more usable during the 6.3
87
- * release. We'd like to remove this in future releases when the jdbc driver
88
- * bundles or shades all of its dependencies. But for now this should help
89
- * non-maven jdbc users, specifically those folks using BI tools.
90
- */
91
- task zipWithDependencies (type : Zip ) {
92
- from configurations. runtime
93
- from configurations. runtime. artifacts. files
94
- baseName ' elasticsearch-jdbc-with-dependencies'
95
- into " elasticsearch-jdbc-with-dependencies-$version "
51
+ shadowJar {
52
+ classifier = null
53
+ relocate ' com.fasterxml' , ' org.elasticsearch.fasterxml'
54
+ }
55
+
56
+ // We don't need normal jar, we use shadow jar instead
57
+ jar. enabled = false
58
+
59
+ // We need a no-depenencies jar though for qa testing so it doesn't conflict with cli
60
+ configurations {
61
+ nodeps
62
+ }
63
+
64
+ task nodepsJar (type : Jar ) {
65
+ appendix ' nodeps'
66
+ from sourceSets. main. output
96
67
}
97
- assemble. dependsOn zipWithDependencies
68
+
69
+ artifacts {
70
+ nodeps nodepsJar
71
+ archives shadowJar
72
+ }
73
+
74
+ publishing {
75
+ publications {
76
+ nebula(MavenPublication ) {
77
+ artifact shadowJar
78
+ pom. withXml {
79
+ // Nebula is mistakenly including all dependencies that are already shadowed into the shadow jar
80
+ asNode(). remove(asNode(). dependencies)
81
+ }
82
+ }
83
+ }
84
+ }
85
+
86
+ assemble. dependsOn shadowJar
98
87
99
88
// Use the jar for testing so the tests are more "real"
100
89
test {
101
90
classpath - = compileJava. outputs. files
102
- classpath + = jar. outputs. files
103
- dependsOn jar
91
+ classpath - = configurations. compile
92
+ classpath - = configurations. runtime
93
+ classpath + = shadowJar. outputs. files
94
+ dependsOn shadowJar
104
95
}
0 commit comments