代码库上传远程仓库利器(maven-pubish/maven)
maven-publish(推荐)
- 如果想把代码发布到私有仓库或公有仓库,那么可以利用maven-publish这个工具非常方便地进行上传
- maven-publish官方文档:https://docs.gradle.org/current/userguide/publishing_maven.html
实践参考
- 以idea工具为例
- 参考配置如下(gradle5.6)
plugins { id 'java-library' id 'maven-publish' } repositories { mavenLocal() maven { url = 'http://repo.maven.apache.org/maven2' } } dependencies { compile 'org.apache.httpcomponents:httpclient:4.5.3' compile 'org.slf4j:slf4j-api:1.7.21' compile 'org.slf4j:slf4j-simple:1.7.21' } group = 'com.github.wxpay' version = '3.0.9' description = 'wxpay-sdk' sourceCompatibility = '1.8' tasks.withType(JavaCompile) { options.encoding = 'UTF-8' } // 源码 task sourcesJar(type: Jar) { from sourceSets.main.allJava archiveClassifier = 'sources' } // javadoc task javadocJar(type: Jar) { from javadoc archiveClassifier = 'javadoc' } publishing { publications { mavenJava(MavenPublication) { artifactId = 'wxpay-sdk' from(components.java) artifact sourcesJar artifact javadocJar } } repositories { maven { url = '你的仓库地址' credentials { username '仓库账号' password '仓库密码' } } } } javadoc { if(JavaVersion.current().isJava9Compatible()) { options.addBooleanOption('html5', true) } // 编码最好都统一为utf-8 options{ encoding "UTF-8" charSet 'UTF-8' author true version true } }
- 之后在根目录下执行一下命令 gradlew publishMavenJavaPublicationToMavenRepository
- 以上特别注意编码的设置,否则可能出现编码GBK的不可映射字符的错误,如果设置后还是出现同样的错误,那么请检查下idea的文件配置
- 如果不需要生成javadoc或者源码,直接把相关配置去掉即可
maven(旧插件)
- maven可用于库的发布
- 官方介绍: https://docs.gradle.org/current/userguide/maven_plugin.html#header
实践参考
-
本例以发布android库为例
-
在库的build.gradle同级目录下创建文件maven.gradle
apply plugin: 'maven' // 指定编码 tasks.withType(JavaCompile) { options.encoding = "UTF-8" } // 打包源码 task androidSourcesJar(type: Jar) { classifier = 'sources' from android.sourceSets.main.java.srcDirs } artifacts { archives androidSourcesJar } afterEvaluate { project -> uploadArchives { repositories { mavenDeployer { //远程仓库的地址 repository(url: "仓库地址") { //nexus登录的用户名和密码 authentication(userName: "admin", password: "admin") } pom.project { //项目引用设置 groupId 'com.gosuncn.util' artifactId 'glog' version '1.0.1' packaging 'aar'//打包的格式 } } } } }
-
之后在要发布的库的目录下的build.gradle中引入
apply from: './maven.gradle' ...
-
最后在工程根目录下执行任务gradlew uploadArchives即可上传到远程仓库
maven和maven-publish的关系
- 实际上maven-publish是maven的升级版,官方也是推荐使用maven-publish,但由于maven出现早,因此大部分文章都是以maven做介绍,不管哪个,只要够用就好