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源码
}

上一篇 下一篇

猜你喜欢

热点阅读