forked from FoundationDB/fdb-record-layer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfdb-record-layer-core-shaded.gradle
128 lines (112 loc) · 4.44 KB
/
fdb-record-layer-core-shaded.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
/*
* fdb-record-layer-core-shaded.gradle
*
* This source file is part of the FoundationDB open source project
*
* Copyright 2015-2018 Apple Inc. and the FoundationDB project authors
*
* Licensed 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.
*/
plugins {
alias(libs.plugins.shadow)
}
def coreProject = ":${ext.coreProjectName}"
dependencies {
implementation project(coreProject)
}
shadowJar {
setArchiveClassifier(null)
relocate 'com.google', 'com.apple.foundationdb.record.shaded.com.google'
dependencies {
// Exclude transitive information from the guava dependency to avoid
// confusing tooling inspecting the jar
exclude "META-INF/maven/**"
include(dependency(coreProject))
include(dependency(':fdb-extensions'))
include(dependency('com.google.guava:guava'))
include(dependency('com.google.protobuf:protobuf-java'))
}
}
build.dependsOn {
shadowJar
}
createDistribution {dependsOn('shadowJar')}
task shadedSourcesJar(type: Jar) {
description = "Assembles a Jar archive containing the main sources."
group = JavaBasePlugin.DOCUMENTATION_GROUP
archiveAppendix = null
archiveClassifier = "sources"
from project(coreProject).sourceSets.main.allSource
from project(':fdb-extensions').sourceSets.main.allSource
dependsOn(project(coreProject).tasks.generateProto)
dependsOn(project(coreProject).tasks.compileJava)
}
task shadedJavadocJar(type: Jar) {
description = "Assembles a Jar archive containing the main Javadoc."
group = JavaBasePlugin.DOCUMENTATION_GROUP
archiveAppendix = null
archiveClassifier = "javadoc"
from project(coreProject).tasks.javadoc
}
ext.shadedDependencyConfigs = ['api', 'implementation']
ext.shadedDependencyNames = ['guava', 'protobuf-java', 'fdb-extensions']
def addDependencies(projectObj, dependenciesNode) {
shadedDependencyConfigs.forEach { config ->
projectObj.configurations[config].getDependencies().forEach { dep ->
if (!shadedDependencyNames.contains(dep.name)) {
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', dep.group)
dependencyNode.appendNode('artifactId', dep.name)
dependencyNode.appendNode('version', dep.version)
dependencyNode.appendNode('scope', config)
}
}
}
}
ext.publishLibrary = false
apply from: rootProject.file('gradle/publishing.gradle')
publishing {
publications {
shadow(MavenPublication) { publication ->
from project.shadow.component(publication)
addPublishingInfo(publication) // function imported from publishing.gradle
publication.pom { pom ->
description = 'A record-oriented layer built for FoundationDB (shaded artifacts).'
pom.withXml { xml ->
// Remove any existing dependencies sections
def childNodes = xml.asNode().children()
def dependenciesNodes = new ArrayList<groovy.util.Node>()
childNodes.forEach { childNode ->
if (childNode.name().equals('dependencies')) {
dependenciesNodes.add(childNode)
}
}
dependenciesNodes.forEach {
xml.asNode().remove(it)
}
// Add a section containing all non-shaded dependencies
def dependenciesNode = xml.asNode().appendNode('dependencies')
addDependencies(project(coreProject), dependenciesNode)
addDependencies(project(':fdb-extensions'), dependenciesNode)
}
}
artifact tasks.shadedSourcesJar
artifact tasks.shadedJavadocJar
}
}
}
if (Boolean.parseBoolean(centralPublish)) {
signing {
sign publishing.publications.shadow
}
}