Android Studio gradle发布module到ma
参考:Android Studio依赖管理与Nexus私服搭建
关闭防火墙 默认端口8081:
systemctl stop firewalld
一:创建仓库
参考资料:
http://books.sonatype.com/nexus-book/3.0/reference/install.html#installation-java
1.1创建自己的仓库
1.1.1创建用户
首先使用管理员密码登陆到 Nexus私服 并添加用户:
nexus默认的用户名:admin
密码:初始密码不是admin123,是保存在nexus安装目录下的sonatype-work的admin.password文件中,打开文件可以看到如下内容:
注:内容即为密码明文,而非加密后的结果,直接复制登录即可。
第一次输入账号密码后,会提示修改初始密码):
登录
创建用户
使用新创建的用户登录Nexus并创建仓库:
二:Modul仓库发布:
在需要发布的Modul下build.gradle中添加uploadArchives任务(
至此gradle发布依赖库到maven私服成功。gradle发布脚本:
/**②.发布到私有服务器maven仓库*/
apply plugin: 'maven'
//打包main目录下代码和资源的 task
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs
}
//配置需要上传到maven仓库的文件
artifacts {
archives androidSourcesJar
}
//上传到Maven仓库的task
uploadArchives {
repositories {
mavenDeployer {
//指定maven仓库url
repository(url: "http://localhost:8081/nexus/content/repositories/releases/"){
//nexus登录默认用户名和密码
authentication(userName: "admin", password: "admin123")
}
pom.project {
pom.groupId = "com.github.itxiaox.utils"// 唯一标识(通常为模块包名,也可以任意)
pom.artifactId = "android-utils" // 项目名称(通常为类库模块名称,也可以任意)
pom.version = "1.0.0" // 版本号
}
}
}
}
编译脚本后,双击上传
三:使用
1.配置nexus仓库访问权限,直接设置允许匿名访问
和使用本地仓库依赖一样,我们告诉gradle依赖包仓库的位置,在项目根目录下build.gradle中添加:
allprojects {
repositories {
jcenter()
//私有服务器仓库地址
maven {
url 'http://127.0.0.1:8081/nexus/content/repositories/releases/'
}
}
}
然后在需要使用的module的build.gradle文件中添加:
implementation 'com.github.itxiaox.utils:android-utils:1.0.0'
3.2按要求进行配置才能进行依赖。
前言
默认情况下,Nexus私服的仓库是允许匿名(anonymous)访问的,也就是任何开发者只要知道你的仓库地址,都可以远程依赖你发布到仓库的库。既然是私服,可能有些库不想要给其他人访问,可以通过设置凭据访问来限制用户访问远程依赖库,最简单的一种就是用户名密码凭据访问。
配置方法
Nexus 服务端配置
第一步:打开远程仓库,使用有配置管理的账户登录,打开设置页面;
第二步:定位到“Security-Anonymous”,将“Allow anonymous users to access the server”勾选去掉,保存更改。
第三步:定位到“Security-Roles”,新建一个可以访问仓库的角色
第四步:配置角色,添加可访问的仓库,保存角色信息
第五步:定位到“Security-Users”,添加用户
第六步:给新建的用户赋予刚才新建的角色,保存用户。
Gradle配置maven依赖
打开AndroidStudio项目根目录下的build.gradle,在maven节点下添加credentials配置,添加username和password两个两个参数配置即可。
repositories {
maven {
url "http://192.168.8.37:8081/repository/RastarGameSdkOversea/" // 具体仓库
credentials {
username = 'uname'
password = 'pwd'
}
}
}
对于其他Maven的配置,跟以上类似,只需要在仓库配置里添加用户名和密码的配置即可。