android中搭建maven私服
一.下载nexus
二.打开dos窗口,进入nexus/bin目录下
三.通过’./nexus start’命令启动nexus服务器
四.在浏览器中输入’http://127.0.0.1:8081’, 如果能够访问到首页,则说明nexus服务器启动成功
五.登录nexus服务器,默认的账号密码分别为admin和admin123
六.点击左侧的Browse即可浏览所有的代码仓库
七.点击工具栏中的设置按钮,再在左侧的菜单栏中选中’Respository’后,点击’Respositories’,最后点击’Create respository’即可,仓库类型选择’maven2(hosted)’
八.编写上传脚本,使android-studio工程能够完成库项目的上传
-
1.创建一个android-studio项目
-
2.在gradle.properties中添加如下配置
# 仓库地址 NEXUS_REPOSITORY_URL = http://127.0.0.1:8081/repository/android-test-release/ # 包名(maven仓库的组织名,不是应用包名) POM_GROUPID = com.gale.android # 类型 POM_PACKAGING = aar # 用户名 NEXUS_USERNAME = admin # 密码 NEXUS_PASSWORD = admin123
-
3.创建一个lib module命名为first_lib
-
4.在first_lib的build.gradle中编写上传脚本
apply plugin: 'com.android.library' apply plugin: 'maven' def pomName = this.getName() def pomVersionName = '1.0.0' def pomDescription = 'a simple android library' android { ... } dependencies { ... } uploadArchives { repositories { mavenDeployer { repository(url: NEXUS_REPOSITORY_URL) { authentication( userName: NEXUS_USERNAME, password: NEXUS_PASSWORD ) } pom.project { name pomName version pomVersionName description pomDescription artifactId pomName groupId POM_GROUPID packaging POM_PACKAGING } } } }
-
5.新建一个Activity,命名为TestActivity
-
6.重新build项目,可以看到此时first_lib模块中多了一个uploadArchives,双击uploadArchives即可完成first_lib库项目的上传
-
7.上传完成即可在nexus的服务器端看到结果
九.在android项目中接入自己创建的maven私服
-
1.打开android工程下的build.gradle文件,在repositories中添加我们自己创建的maven仓库
buildscript { repositories { google() jcenter() maven { url 'http://127.0.0.1:8081/repository/android-test-release/' credentials { username 'admin' password 'admin123' } } } dependencies { ... } } allprojects { repositories { google() jcenter() maven { url 'http://127.0.0.1:8081/repository/android-test-release/' credentials { username 'admin' password 'admin123' } } } } task clean(type: Delete) { delete rootProject.buildDir }
-
2.在app module的build.gradle中引入依赖
apply plugin: 'com.android.application' android { ... } dependencies { ... implementation 'com.gale.android:first_lib:1.0.0' }
-
3.在MainActivity中使用远程仓库中的first_lib中创建的TestActivity
package com.gale.nexustest; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import com.gale.first_lib.TestActivity; public class MainActivity extends AppCompatActivity { private Button mBtnStartActivity; private MainActivity mContext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mContext = this; mBtnStartActivity = findViewById(R.id.btn_start_activity); mBtnStartActivity.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //TestActivity来自远程仓库 Intent i = new Intent(mContext, TestActivity.class); startActivity(i); } }); } }
-
4.运行结果