下面代码保存到rootProject/gradle目录下的publishNexus.gradle
文件
apply plugin: 'maven-publish'
afterEvaluate {
publishing {
publications {
maven(MavenPublication) {
if (isAndroidProject()) {
from components.release
artifact androidSourcesJar
} else {
from components.java
}
groupId = GROUP_ID
artifactId = ARTIFACT_ID
version = VERSION
pom {
// scm配置官网链接:https://maven.apache.org/pom.html#SCM
scm {
connection = SCM_CONNECTION
url = SCM_URL
}
}
}
}
repositories {
maven {
url = isReleaseBuild() ? project.RELEASE_MAVEN_URL : project.SNAPSHOT_MAVEN_URL
credentials {
username = project.hasProperty('NEXUS_USERNAME') ? project.NEXUS_USERNAME : ''
password = project.hasProperty('NEXUS_PASSWORD') ? project.NEXUS_PASSWORD : ''
}
}
}
publishToMavenLocal.dependsOn(assemble)
publish.dependsOn(assemble)
}
}
java {
withSourcesJar()
}
task androidSourcesJar(type: Jar) {
archiveClassifier.set('sources')
from android.sourceSets.main.java.srcDirs
}
boolean isReleaseBuild() {
return !VERSION.contains("SNAPSHOT")
}
boolean isAndroidProject() {
return project.plugins.hasPlugin("com.android.library") || project.plugins.hasPlugin("com.android.application")
}
module目录下创建/修改文件gradle.properties
,添加内容
GROUP_ID=com.yourgroup
ARTIFACT_ID=artifact-name
#VERSION=0.1.0-SNAPSHOT
VERSION=0.1.0
SCM_CONNECTION="scm:git:ssh://gerrit.yourgroup.com/project"
SCM_URL="https://gerrit.yourgroup.com/project"
DESCRIPTION=project-name
# maven
RELEASE_MAVEN_URL=http://maven.yourgroup.com/content/repositories/releases/
SNAPSHOT_MAVEN_URL=http://maven.yourgroup.com/content/repositories/snapshots/
# 可以放到全局位置 ~/.gradle/gradle.properties
NEXUS_USERNAME=
NEXUS_PASSWORD=
在module的build.gradle
文件结尾添加
apply from: "${rootProject.projectDir}/gradle/publishNexus.gradle"