Gradle7.0以上版本上传maven仓库
2023-05-03 本文已影响0人
丹丹无敌
Gradle打包API文档地址
使用 Maven Publish 插件
使用Maven实现组件化类库发布
在Gradle7.0版本以上,要进行maven打包生成aar或jar,需要引入插件:maven-publish
打包jar的脚本如下:
apply plugin: 'maven-publish'
def projectConfigPath = "../../../project_maven_upload.properties"
Properties prop = new Properties()
prop.load(new FileInputStream(file(projectConfigPath)))
//maven仓库地址
def RELEASE_REPOSITORY_URL = prop.getProperty("maven-release-url")
//maven快照仓库地址
def SNAPSHOT_REPOSITORY_URL = prop.getProperty("maven-snapshot-url")
def NEXUS_USERNAME = prop.getProperty("maven-credentials-username")
def NEXUS_PASSWORD = prop.getProperty("maven-credentials-password")
publishing {
publications {
maven {
//allowInsecureProtocol(true)
name("ReleaseMaven")
url = RELEASE_REPOSITORY_URL
credentials {
username = NEXUS_USERNAME
password = NEXUS_PASSWORD
}
}
maven {
name("SnapshotMaven")
url = SNAPSHOT_REPOSITORY_URL
credentials {
username = NEXUS_USERNAME
password = NEXUS_PASSWORD
}
}
}
publications {
Production(MavenPublication) {
from components.java
artifact androidSourcesJar //打包源码,去除这行打的包将看不到源码
groupId = GROUP
artifactId = POM_ARTIFACT_ID
version = VERSION_NAME
}
}
}
}
// 用于打包源代码的任务
task androidSourcesJar(type: Jar) {
archiveClassifier.set('sources')
//from android.sourceSets.main.java.sourceFiles //仅Java源码
from android.sourceSets.main.java.srcDirs //包括Java和Kotlin源码
}
打包生成aar包并进行上传到远程仓库,脚本如下:
apply plugin: 'maven-publish'
def projectConfigPath = "../../../project_maven_upload.properties"
Properties prop = new Properties()
prop.load(new FileInputStream(file(projectConfigPath)))
//maven仓库地址
def RELEASE_REPOSITORY_URL = prop.getProperty("maven-release-url")
//maven快照仓库地址
def SNAPSHOT_REPOSITORY_URL = prop.getProperty("maven-snapshot-url")
def NEXUS_USERNAME = prop.getProperty("maven-credentials-username")
def NEXUS_PASSWORD = prop.getProperty("maven-credentials-password")
afterEvaluate {
publishing {
repositories {
maven {
//allowInsecureProtocol(true)
name("ReleaseMaven")
url = RELEASE_REPOSITORY_URL
credentials {
username = NEXUS_USERNAME
password = NEXUS_PASSWORD
}
}
maven {
name("SnapshotMaven")
url = SNAPSHOT_REPOSITORY_URL
credentials {
username = NEXUS_USERNAME
password = NEXUS_PASSWORD
}
}
}
publications {
Production(MavenPublication) {
from components.release
artifact androidSourcesJar //打包源码,去除这行打的包将看不到源码
groupId = GROUP
artifactId = POM_ARTIFACT_ID
version = VERSION_NAME
}
Develop(MavenPublication) {
from components.debug
artifact androidSourcesJar //打包源码,去除这行打的包将看不到源码
groupId = GROUP
artifactId = POM_ARTIFACT_ID
version = "${VERSION_NAME}-SNAPSHOT"
}
}
}
}
// 用于打包源代码的任务
task androidSourcesJar(type: Jar) {
archiveClassifier.set('sources')
//from android.sourceSets.main.java.sourceFiles //仅Java源码
from android.sourceSets.main.java.srcDirs //包括Java和Kotlin源码
}