一、通过"maven"插件上传

在gradle里依赖maven插件

apply plugin:'maven'

配置上传的task的参数

uploadArchives {
    repositories.mavenDeployer {
        repository(url: uri(MAVEN_URL)){
           //你Nexus的账户密码
           authentication(userName: 'username', password: 'admin')
        }
        pom.groupId = 'com.example.plugins'
        pom.artifactId =  'TestPlugin'
        pom.version = '1.0.0'
    }
}

MAVEN_URL可以为本地仓库或者远程仓库的路径

二、通过"maven-publish"插件上传

将上传的脚本封装成一个gradle文件,upload-lib.gradle

apply plugin: 'maven-publish'

//上传groupId名称
def MAVEN_GROUPID = rootProject.ext.maven_config.GROUP_ID
//maven私服用户名
def MAVEN_USERNAME = rootProject.ext.maven_config.MAVEN_NAME
//maven私服密码
def MAVEN_PASSWORD = rootProject.ext.maven_config.MAVEN_PSW

//分远程和本地
def MAVEN_URL = rootProject.ext.maven_config.UPLOAD_TO_REMOTE_MAVEN ? rootProject.ext.maven_config.MAVEN_URL : '../repo'
println("MAVEN_URL:${MAVEN_URL}")

publishing {
    publications {
        uploadSDK(MavenPublication) {
            groupId MAVEN_GROUPID
            pom.withXml {
                def dependenciesNode = asNode().appendNode('dependencies')
                configurations.implementation.allDependencies.withType(ModuleDependency) { ModuleDependency dp ->
                    if (dp.version != "unspecified") {
                        def dependencyNode = dependenciesNode.appendNode('dependency')
                        dependencyNode.appendNode('groupId', dp.group)
                        dependencyNode.appendNode('artifactId', dp.name)
                        dependencyNode.appendNode('version', dp.version)

                        if (dp.excludeRules.size() > 0) {
                            def exclusions = dependencyNode.appendNode('exclusions')
                            dp.excludeRules.each { ExcludeRule ex ->
                                def exclusion = exclusions.appendNode('exclusion')
                                exclusion.appendNode('groupId', ex.group)
                                exclusion.appendNode('artifactId', ex.module)
                            }
                        }
                    }
                }
            }
        }
    }

    repositories {
        maven {
            url MAVEN_URL
            //远程才需要账号和密码
            if(rootProject.ext.maven_config.UPLOAD_TO_REMOTE_MAVEN){
                credentials {
                    username MAVEN_USERNAME
                    password MAVEN_PASSWORD
                }
            }
        }
    }

}

task publishToMaven(dependsOn: ['assemble', 'publish']) {
    doLast {
        println "finish publish to maven"
    }
}

publishToMaven.setGroup('upload')

引入上传脚本

apply from: '../upload-lib.gradle'

配置maven参数

//maven配置
publishing {
    publications {
        uploadSDK(MavenPublication) {
            artifact 'build/libs/libprocessor.jar'   //可以自定义上传的文件
            artifactId rootProject.ext.lib_config.LIB_PROCESSOR.LIB_NAME
            version  rootProject.ext.lib_config.LIB_PROCESSOR.VERSION_NAME
            description '路由框架的注解编译器及注解'
        }
    }
}

三、引入maven仓库

在工程根目录下的build.gradle里配置repositories

1.引入本地maven仓库

 maven {
                url uri('本地maven仓库名')
 }

2.引入远程maven仓库

maven { url '远程仓库地址' }


0 条评论

发表回复

您的电子邮箱地址不会被公开。