Android的Nexus搭建Maven私有仓库

简介: Android的Nexus搭建Maven私有仓库

Android的Nexus搭建Maven私有仓库


image.png

前言


我们平时在开发的时候总会compile一些远程仓库的框架来使用,但不可避免的是有些公司是内网,或是断网了,这就造成了依赖失败,亦或是自己开发了一个很牛的组件,希望同步给小伙伴一块耍耍,但是网络环境不允许,总不能拿个U盘拷贝过去吧,被别人听到程序员是这么协作的,估计会笑掉大牙。 Nexus这个私服正好解决了这个问题,他的思路是本地与远程之间嫁接一层本地的服务器,对于公司内部团队协作开发的,我们可以将自己的组件上传到私服上,同一个局域网下,供小伙伴们依赖,避免了直接与远程仓库对接。


所以,这一次就来教大家如果搭建一个属于自己的本地仓库,然后通过gradle将自己的library上传到自己的仓库,供小伙伴们使用


环境搭建


image.png


  • 解压看下路径

image.png


如果是win系统的话,可以点击bin目录下面的jsw目录,选择自己对应的平台,然后点击start-nexus.bat批处理文件就可以运行起本地的私服,我当前的系统环境mac,只需要在Terminal下cd到bin目录下面,通过命令**“./nexus start”** 就可以开启私服,当然,与之对应的关闭私服命令是**"./nexus stop"**


image.png


  • 在浏览器中是输入http://localhost:8081/nexus/,点击右上角的log in进行登录,默认的用户名是admin,密码是admin123,


image.png

  • 第1处,点击左边的菜单栏的Repositories,可以查看默认的几个仓库


image.png


nexus的仓库Type分为以下四种: - group: 仓库组 - hosted:宿主 - proxy:代理 - virtual:虚拟


第3处的链接就是我们仓库的地址,我们后面会根据这个地址,将library上传到该地址的仓库中去


接下来,我们创建一个自己仓库,点击第2处"Add"选择"Hosted Repository",在新建的面板输入ID和Name,Deployment Policy一定要选择Allow Redeploy,红色箭头那个部分,部署策略设置为允许重新部署,因为我们的库肯定会频繁修改和提交,点击save就可以保存


image.png


在仓库列表的中就会出现codelang仓库,我们点击看一下,当前仓库是没有什么文件的


image.png

上传文件到仓库

上传到仓库有两种方式,一种是手动方式,一种是通过gradle上传的方式,我们先来看看手动方式


手动方式:


我们点击codelang仓库,在仓库详情的tab中,选择Artifact Upload一栏


image.png


  • 第1处,我们选择AGV Parameters来定义我们的资源
  • 第2处,设置组Group,何为Group呢?比如,我们依赖Retrofit框架 compile 'com.squareup.retrofit2:retrofit:2.1.0' ,那么"com.squareup.retrofit2"就是组,我们在依赖的时候会用到它
  • 第3处,设置Artifact,Artifact和第二处的Group一样,两个冒号中间的"retrofit"就是Artifact,一般,我们用它来定义库的名称
  • 第4处,设置Version版本号,和第二处的例子"2.1.0"一样
  • 第5处,设置包的类型,就是我们依赖的库是什么类型的
  • 第6处,选择我们上传的文件


image.png


  • 第7处,将这个库添加到待上传区域,这个地方可以多次选择添加文件,我们将支付宝jar和微信jar一同上传,一般有支付类的app都会有他们俩存在,所以,我们将他两捆绑在一起,以后就只需依赖一个文件就可以了
  • 第8处,我们点击"Upload Artifact"进行上传到仓库

上传成功后,我们点击仓库列表codelang仓库后面的链接,你就会看见我们刚刚定义的库,我们一直点下去看看


image.png


对于java web开发,通过pom来依赖Maven库的,我们可以通过仓库详情页的Browser Index 一栏来查看


image.png

gradle上传


经过上面的一番手动上传,我们应该对上传到仓库有了一定的了解。接下来,我们用gradle的方式,将我们的library库上传到仓库,供我们的小伙伴们集成.(在组件化开发模式下,我们一般都要将业务组件打包成aar文件上传到仓库,供空壳app集成)


1、新建一个Module,选择Android Library,取名叫baseLib,用来存放一些基类


image.png


2、第1处,打开项目的gradle.properties文件,第二处,配置上传的参数,供gradle读取

image.png

看到这些配置很熟悉吧,和手动上传传递的参数一样


3、接下来,我们打开baseLib的build.gradle文件,配置一下上传到maven的代码,然后gradle运行一下


dependencies {
    ...
 }
 apply plugin: 'maven'
 uploadArchives {
     configuration = configurations.archives
     repositories {
         mavenDeployer {
             repository(url: MAVEN_URL) {
                 authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
             }
             pom.project {
                 groupId GROUP
                 artifactId ARTIFACT
                 version VERSION
                 packaging TYPE
                 description DESCRIPTION
             }
         }
     }
 }
 artifacts {
     archives file('baselib.aar')
 }
复制代码


4、我们在baseLib里面写个BaseActivity基类


public  abstract  class  BaseActivity  extends  Activity {
    private Toast mToast;
    @Override
    protected  void  onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(getLayoutId());
        mToast = Toast.makeText(this, "", Toast.LENGTH_SHORT);
        mToast.setGravity(Gravity.CENTER, 0, 0);
        initView();
    }
    public  void  showToast(String str) {
        mToast.setText(str);
        mToast.show();
    }
    /**
     * 布局id
     *
     * @return int
     */
    protected  abstract int  getLayoutId();
    /**
     * 初始化view
     */
    protected  abstract void  initView();
}
复制代码


5、点击build菜单栏下面的ReBuild Project生成aar文件,项目默认是不会生成aar文件的 将项目切换到Project模式下面,就可以看到生成的aar文件


image.png


6、点击项目最右边的gradle侧边栏,展开baselib,打开upload,双击运行uploadArchives进行上传,下面没有报错,那就说明上传成功


image.png


7、打开远程仓库看看我们的arr文件,和我们手动上传的想效果一样,完美


image.png

使用

现在,我们开始使用它吧


我们随便新建一个项目,然后打开项目的build.gradle文件,输入maven的地址,也就是我们codelang仓库的地址


allprojects {
    repositories {
        jcenter()
        maven{ url 'http://localhost:8081/nexus/content/repositories/codelang'}
    }
}
复制代码


然后,我们打开app的build.gradle文件,还记得依赖库的命名方式吗?

"Group:Artifact:version"


dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
    //添加依赖库
    compile 'com.codelang.baseLib:baseLib:1.0.0'
    compile 'codelang:pay:1.0.0'
}
复制代码


gradle编译一下,然后我们在MainActivity使用一下,完美


image.png

目录
相关文章
|
5月前
|
敏捷开发 Java 持续交付
阿里云云效产品使用合集之maven仓库是否可以代替自建的Nexus
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
6月前
|
Java Linux Maven
Maven 仓库
Maven仓库管理构件(如JARs):本地仓库在首次执行时创建,默认位于`%USER_HOME%/.m2/repository/`;远程仓库包括中央仓库,存放大量开源Java构件,可在线浏览<http://search.maven.org/>。若本地缺失构件,Maven会从远程下载至本地。可通过settings.xml配置本地仓库路径。
|
3月前
|
XML 安全 Java
【Maven】依赖管理,Maven仓库,Maven核心功能
【Maven】依赖管理,Maven仓库,Maven核心功能
838 3
|
5月前
|
Java 开发工具 Maven
Flutter和Android中覆盖gradle中的repositories仓库地址
Flutter和Android中覆盖gradle中的repositories仓库地址
253 4
|
6月前
|
Java Maven
maven开源仓库
maven开源仓库
142 6
|
5月前
|
Java jenkins 持续交付
jenkins学习笔记之十七:使用插件及maven上传制品到nexus
jenkins学习笔记之十七:使用插件及maven上传制品到nexus
|
5月前
|
敏捷开发 JavaScript Java
阿里云云效产品使用合集之如何进行Maven私有仓库迁移
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
6月前
|
Java Linux Maven
Maven 仓库
Maven仓库管理构件,包括依赖和插件。有本地、中央和远程三种类型。本地仓库在首次运行时创建,默认在用户目录的`.m2/repository`。Maven首先查找本地仓库,若无则从远程仓库(如中央仓库)下载。中央仓库包含大量开源Java构件,可在线浏览于http://search.maven.org/。
|
7月前
|
Java Linux Maven
Maven 仓库
Maven仓库管理依赖,包括本地、中央和远程仓库。本地仓库在首次运行时创建,默认位于用户目录的`.m2/repository`。若本地缺少构件,Maven会从远程仓库下载,中央仓库是默认的远程源,包含大量开源Java构件。中央仓库无需配置,可通过HTTP访问,[search.maven.org](http://search.maven.org/#browse)可浏览其内容。
|
7月前
|
Java Linux Maven
Maven 仓库
Maven仓库管理构件,如JARs,分为本地、中央和远程。本地仓库在首次运行时于用户目录的`.m2/repository`创建,默认位置可修改`settings.xml`。中央仓库是社区维护的,包含大量开源Java构件,可通过http://search.maven.org搜索。当本地缺失依赖时,Maven会从远程仓库下载到本地。