forked from didi/DoKit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathupload_private.gradle
133 lines (121 loc) · 5.99 KB
/
upload_private.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
import org.gradle.api.internal.artifacts.dependencies.DefaultProjectDependency
import org.json.JSONObject
//本地或者滴滴内部仓库打包脚本(插件需要单独区分)
apply plugin: 'maven-publish'
def PUBLISH_ARCHIVES_TYPE = rootProject.ext.publish_config["archives_type"]
def DOKIT_VERSION = rootProject.ext.publish_config["version"]
def DOKIT_GROUP_ID = rootProject.ext.publish_config["group_id"]
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
def LOCAL_REPOSITORY_URL = properties.getProperty('LOCAL_REPOSITORY_URL', "")
def DIDI_REPOSITORY_URL = properties.getProperty('DIDI_REPOSITORY_URL', "")
def DIDI_SNAPSHOT_REPOSITORY_URL = properties.getProperty('DIDI_SNAPSHOT_REPOSITORY_URL', "")
def USERNAME = properties.getProperty('DIDI_USERNAME', "")
def PASSWORD = properties.getProperty('DIDI_PASSWORD', "")
//读取module和ARTIFACT_ID的映射文件
def MODULE_JSONOBJECT = new JSONObject(new File("${rootProject.rootDir}/dokit_module.json").text)
task packageSourcesJar(type: Jar) {
classifier 'sources'
if (project.ARTIFACT_ID == "dokitx-plugin") {
from project.kotlin.sourceSets.main.kotlin.source
} else {
from project.android.sourceSets.main.java.source
}
}
if (project.ARTIFACT_ID == "dokitx-plugin") {
task packageJavadoc(type: Jar) {
classifier = 'javadoc'
from javadoc
}
}
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"
// You only need this if you want to publish snapshots, otherwise just set the URL
// to the release repo directly
if(PUBLISH_ARCHIVES_TYPE == 0){
url = LOCAL_REPOSITORY_URL
}else if(PUBLISH_ARCHIVES_TYPE ==1 ){
url = DIDI_REPOSITORY_URL
}
// The username and password we've fetched earlier
if (PUBLISH_ARCHIVES_TYPE == 1) {
credentials {
username USERNAME
password PASSWORD
}
}
}
}
}
}