android maven上传零配置插件

介绍了一种便捷的Maven项目部署工具,支持多种仓库上传,包括Nexus、Artifactory和JCenter,无需手动配置,简化了发布流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目地址

支持上传多种maven仓库,配置相关全部自动生成,无需在项目中增加上传配置,支持使用maven、artifactory插件swing界面上传

安装指南

通过jar包在项目根目录直接运行使用

java -jar deploytools.jar

安装插件使用,也可以通过搜索MavenDeploy进行安装

Settings>Plugins>install plugin from disk

使用指南

  1. 配置发布的账号信息

在这里插入图片描述

  1. 选择模块填写版本号进行发布,或者选择文件进行单独发布

在这里插入图片描述

实现方式

通过java文件流操作进行备份修改build.gradle,还原备份,Java Runtime.exec()执行相应的命令

1.主要实现java虚拟机执行命令行,需要区分不同系统命令行的拼接

 public ExecuteResult execute(String command) {
        try {
            log(command);
            Process process = null;
            String cd = getCD();
            if (DeviceTools.isMac()) {
                String cmds[] = new String[]{DeviceTools.getCommand(), DeviceTools.getC(), cd + DeviceTools.getPlatformWithGradle() + command};
                process = Runtime.getRuntime().exec(cmds);

            } else {
                String cmd = DeviceTools.getCommand() + " " + DeviceTools.getC() + cd + DeviceTools.getPlatformWithGradle() + command;
                process = Runtime.getRuntime().exec(cmd);
            }

            String msg = readStream(process.getInputStream());
            String error = readStream(process.getErrorStream());
            int result = process.waitFor();//0 成功
            return new ExecuteResult(result, msg, error);
        } catch (Exception e) {
            e.printStackTrace();
            return new ExecuteResult(1, "", e.getMessage());
        }
    }

2.创建账号信息配置文件,用于下一步的字符替换

//自动生成上传配置
def URL = "%s"
def USER = "%s"
def PASSWORD = "%s"
def GROUPID = "%s"
def ARTIFACTID = "%s"
def VERSION = "%s"
def PACKAGING = "%s"
def REPOKEY = "%s"

3.nexus插件
只需要在发布模块的Library build.gradle追加通用配置文件和发布配置即可

apply plugin: 'maven'
uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: URL + REPOKEY) {
                authentication(userName: USER, password: PASSWORD)
            }
            pom.project {
                groupId = GROUPID
                artifactId = ARTIFACTID
                version = VERSION
                packaging PACKAGING

                licenses {
                    license {
                        name 'The Apache Software License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }
            }
        }
    }
}

4.artifactory插件
根目录需要增加classpath

buildscript {
    repositories {
        maven { url 'http://repo.jfrog.org/artifactory/gradle-plugins' }
    }
    dependencies {
        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.1.1"
    }
}

发布模块的Library build.gradle追加


apply plugin: 'com.jfrog.artifactory'
apply plugin: 'maven-publish'

publishing {
    publications {
        aar(MavenPublication) {
            groupId GROUPID
            version = VERSION
            artifactId ARTIFACTID

            // Tell maven to prepare the generated "*.aar" file for publishing
            artifact("${buildDir}/outputs/aar/${project.getName()}-release.aar")
            pom.withXml {
                def dependenciesNode = asNode().appendNode('dependencies')
                configurations.implementation.allDependencies.withType(ModuleDependency) { ModuleDependency dp ->
                    if (dp.version != "unspecified") { // 过滤项目内library引用
                        def dependencyNode = dependenciesNode.appendNode('dependency')
                        dependencyNode.appendNode('groupId', dp.group)
                        dependencyNode.appendNode('artifactId', dp.name)
                        dependencyNode.appendNode('version', dp.version)

                        // for exclusions
                        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)
                            }
                        }
                    }
                }
            }
        }
    }
}
artifactory {//artifactory配置
    contextUrl = URL
    publish {
        repository {
            repoKey = REPOKEY
            username = USER
            password = PASSWORD
            maven = true
        }
        defaults {
            publications(PACKAGING)
            publishArtifacts = true

            properties = ['qa.level': 'basic', 'dev.team': 'core']
            publishPom = true
            publishIvy = false
        }

    }
}



5.jcenter插件
根目录需要增加classpath


buildscript {
    dependencies {
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.3.1'
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
    }
}

发布模块的Library build.gradle追加

apply plugin: 'com.jfrog.bintray'
apply plugin: 'com.github.dcendents.android-maven'

group = GROUPID  // 一般写唯一的包名
version =VERSION  // 版本号

install {
    repositories.mavenInstaller {
        pom {
            project {
                packaging PACKAGING
                name ''  //项目描述
                url URL+REPOKEY//siteUrl

                licenses {
                    license {
                        name 'The Apache Software License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }

            }

        }
    }
}

bintray {
    user = USER
    key = PASSWORD
    configurations = ['archives']
    pkg {
        version {
            name = VERSION
            desc = ''//此处是描述
        }
        repo = 'maven'    // bintray上创建的仓库名,我这用的maven
        name = ARTIFACTID  //发布到JCenter上的项目名字
        licenses = ['Apache-2.0']
        vcsUrl = ''
        publish = true
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值