记录 gradle 的 maven-publish 配置

心已入冬 提交于 2020-08-11 18:10:35

日常工作中我们用gradle构建项目时需要将构建结果上传到maven私服,gradle提供了maven-publish插件来帮助我们上传。maven-publish插件的功能简单而强大,参考这里 即可。
但是文章中没有提供用户密码的配置。
虽然可以在repositories.maven.redentials 中指定 username 以及 password:

publishing {
    repositories {
        maven {
            credentials {
                username xxx
                password xxx
            }
        }
    }
}

但这样一来我们的代码上传到代码仓库时就暴露了用户密码 。。
下面直接给出将用户密码写在环境变量的解决方案:

plugins {
    id 'maven-publish'
}
publishing {
    publications {
        maven(MavenPublication) {
            from components.java
            artifact sourceesJar {
                // ...
            }
            pom {
                name = xxx
                description = xxx
                url = xxx
                developers {
                    developer {
                        id = 'landas'
                        name = 'landas'
                        email = 'landas@qq.com'
                    }
                }
                scm {
                    url = ...
                }
            }
        }
    }
    repositories {
        maven {
            url = version.endsWith('SNAPSHOT') ? snapshotRepo : releaseRepo
            credentials {
                username System.getenv("MAVEN_USER")
                password System.getenv("MAVEN_PSWD")
            }
        }
    }
}

注意这里的环境变量 MAVEN_USER/MAVEN_PSWD 是执行 publish 任务的环境变量。
如果是本地那就是操作系统变量,如果是线上那就是执行CICD时的上下文。

Fin ~

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!