forked from didi/DoKit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathupload_maven_central.gradle
155 lines (139 loc) · 6.65 KB
/
upload_maven_central.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
import org.gradle.api.internal.artifacts.dependencies.DefaultProjectDependency
import org.json.JSONObject
// mavenCentral 打包脚本
apply plugin: 'maven-publish'
apply plugin: 'signing'
def DOKIT_VERSION = rootProject.ext.publish_config["version"]
def DOKIT_GROUP_ID = rootProject.ext.publish_config["group_id"]
//生成源码注释
task packageSourcesJar(type: Jar) {
classifier 'sources'
if (project.ARTIFACT_ID == "dokitx-plugin") {
from project.kotlin.sourceSets.main.kotlin.getSrcDirs()
} else {
from project.android.sourceSets.main.java.getSrcDirs()
}
}
if (project.ARTIFACT_ID == "dokitx-plugin") {
task packageJavadoc(type: Jar) {
classifier = 'javadoc'
from javadoc
}
}
ext["signing.keyId"] = ''
ext["signing.password"] = ''
ext["signing.secretKeyRingFile"] = ''
ext["ossrhUsername"] = ''
ext["ossrhPassword"] = ''
File secretPropsFile = project.rootProject.file('local.properties')
if (secretPropsFile.exists()) {
println "Found secret props file, loading props"
Properties p = new Properties()
p.load(new FileInputStream(secretPropsFile))
p.each { name, value ->
ext[name] = value
}
println "Found secret props file, loading props"
} else {
throw NullPointerException("no local.properties exists")
}
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
def USERNAME = properties.getProperty('MAVEN_CENTRAL_USERNAME', "")
def PASSWORD = properties.getProperty('MAVEN_CENTRAL_PASSWORD', "")
//读取module和ARTIFACT_ID的映射文件
def MODULE_JSONOBJECT = new JSONObject(new File("${rootProject.rootDir}/dokit_module.json").text)
//println("jsonObject==>${MODULE_JSONOBJECT.getString("doraemonkit")}")
afterEvaluate {
publishing {
publications {
release(MavenPublication) {
// The coordinates of the library, being set from variables that
// we'll set up in a moment
groupId DOKIT_GROUP_ID
artifactId project.ARTIFACT_ID
version DOKIT_VERSION
artifact packageSourcesJar
// Two artifacts, the `aar` and the sources
if (project.ARTIFACT_ID == "dokitx-plugin") {
artifact packageJavadoc
artifact("$buildDir/libs/${project.getName()}.jar")
} else {
artifact("$buildDir/outputs/aar/${project.getName()}-release.aar")
}
// Self-explanatory metadata for the most part
pom {
name = project.ARTIFACT_ID
description = 'DoKit is an efficiency platform for the entire life cycle of general front-end product research and development.'
// If your project has a dedicated site, use its URL here
url = 'https://github.com/didi/DoraemonKit'
licenses {
license {
name = 'The Apache License, Version 2.0'
url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
developers {
developer {
id = 'OrangeLab'
name = 'Orange Lab'
email = '[email protected]'
}
}
// Version control info, if you're using GitHub, follow the format as seen here
scm {
connection = 'scm:git:git://github.com/didi/DoraemonKit.git'
developerConnection = 'scm:git:ssh://github.com/didi/DoraemonKit.git'
url = 'https://github.com/didi/DoraemonKit/tree/master'
}
// A slightly hacky fix so that your POM will include any transitive dependencies
// that your library builds upon
withXml {
def dependenciesNode = asNode().appendNode('dependencies')
project.configurations.implementation.allDependencies.each { dependency ->
if (!dependency.name.isEmpty() && dependency.name != "unspecified") {
def dependencyNode = dependenciesNode.appendNode('dependency')
if (dependency instanceof DefaultProjectDependency) {
//统一project 前缀
if (dependency.name.startsWith("dokit")) {
dependencyNode.appendNode('groupId', DOKIT_GROUP_ID)
dependencyNode.appendNode('artifactId', MODULE_JSONOBJECT.getString(dependency.name))
dependencyNode.appendNode('version', DOKIT_VERSION)
}
} else {
dependencyNode.appendNode('groupId', dependency.group)
dependencyNode.appendNode('artifactId', dependency.name)
dependencyNode.appendNode('version', dependency.version)
}
}
}
}
}
}
}
repositories {
// The repository to publish to, Sonatype/MavenCentral
maven {
// This is an arbitrary name, you may also use "mavencentral" or
// any other name that's descriptive for you
name = "mavenCentral"
def releasesRepoUrl = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"
def snapshotsRepoUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots/"
// You only need this if you want to publish snapshots, otherwise just set the URL
// to the release repo directly
url = DOKIT_VERSION.endsWith('-SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
// 用于打印url,方便查看aar是否存在
def searchUrl = "https://search.maven.org/artifact/"
System.out.println("aar url:" + searchUrl + DOKIT_GROUP_ID + "/" + project.ARTIFACT_ID + "/" + DOKIT_VERSION + "/aar")
// The username and password we've fetched earlier
credentials {
username USERNAME
password PASSWORD
}
}
}
}
}
signing {
sign publishing.publications
}