背景
上一篇服务器搭建了Maven
私服,只手动上传我们的lib,现在我们通过代码发布
。
搭建maven:https://moonlightshadow.cn/article/848552787661815808
发布库:https://moonlightshadow.cn/article/848553093699207168
代码发布aar
先打包aar,才能发布。 未打包前。
可以看到outputs
中只有logs文件夹。
我们通过gradle
任务打包一次。
双击任务assemble
,等待构建完成。观察outputs
。
我们的包打好了,一个debug的也就是明文。如果你配置了混淆,release的可以能混淆代码了。
通常情况下,这样把aar上传到Maven也是可以的。只是在依赖的时候需要加后缀@aar才能依赖下来。这个规则。
implementation("com.debug.nexus:java:1.0.0@aar")
但是这样很不友好,通常我们都不会这样写。
我们通过代码走Maven的标准发布,就不需要写了。
在我们lib的build.gradle
文件中配置如下代码。
apply plugin: 'maven'
...
uploadArchives {
configuration = configurations.archives
repositories {
mavenDeployer {
repository(url: 'http://666.66.66.6:8081/repository/maven-releases') {
authentication(userName: 'admin', password: '234234234500b219de')
}
pom.project {
//版本名称
version '1.0.0'
//groupId 和 artifactId 要与服务器上面统一,方能实现版本更新
artifactId 'java'
groupId 'com.debug.nexus'
packaging 'aar'
//更新描述
description 'update version 1.1.0 add new method test'
}
}
}
}
配置完成后,我们点击async
按钮,同步一次。
上传任务出来之后,双击它,就能上传,前提是你的地址和密码正确。
如果使用自己的Maven
在项目的根build.gradle
中配置源地址。
allprojects {
repositories {
google()
jcenter()
maven { url "https://jitpack.io" }
jcenter{
url rootProject.file('localMaven')
}
//配置自己服务器的地址
maven {
url 'http://66.666.66.66:8081/repository/maven-releases'
}
}
}
在使用的地方,像平时依赖其他库一样。
implementation("com.debug.nexus:java:1.0.0")
当你更新了代码,然后更新版本,重新打包上传即可。 我们的服务端的库情况。
可以选择Maven
和Gradle
或者其他的构建平台的依赖代码。
能解决什么问题
- 代码被打包成块之后,项目部需要针对module生成本地缓存代码,加快构建速度。 如果你的项目有几十个module你就能感受到了。
- 一个公司中,如果有公共模块,多个项目使用,可以通过这样方式统一管理,更新方便。
- 开发SDK,多个模块组合成最终模块,主模块依赖子模块即可,打包会自动把依赖关系打到pom中,使用方只需要依赖主SDK即可。