Desarrollo de componentes de Android (1)--Construcción de servicios privados de Maven

prefacio

Todos entendemos algo sobre la creación de componentes. Básicamente, para algunas aplicaciones de Internet a gran escala, la creación de componentes se utilizará para el desarrollo, que también es la máxima prioridad en la entrevista. Esta columna explicará todo el sistema de conocimiento del proyecto ampliando el desarrollo de un proyecto real. .

La siguiente imagen es el marco del proyecto real que debemos explicar más adelante:

Desarrollo de componentes.png

Hoy, no explicaremos primero el marco del proyecto. Vamos a crear un servidor privado maven para allanar el camino para nuestro proyecto de marco de componentes.

Introducción

mavenEl servidor privado es en realidad para configurar un mavenalmacén en el departamento, LAN, y todos los desarrolladores en la LAN pueden usar el almacén:

1. Introducción a la biblioteca maven.png

PD: puede agregar su propio almacén local en el servidor privado, o puede enviar 中央仓库el paquete por proxy. Después de todo, para algunos entornos con una red deficiente, obtener datos del almacén central es una operación que requiere mucho tiempo.

ventaja

1. Ahorre su propio ancho de banda externo:

2. Acelera el proceso de construcción

3. Puede implementar componentes de terceros

4. Mejorar la estabilidad y mejorar el control

5. Reducir la carga en el almacén central

servidor privado maven ventaja.png

Cómo construir un servidor privado Maven

1. Vaya al 官网下载 iniciador del servidor privado maven    nexus:

Dirección: www.sonatype.com/

2. Después de la descarga, después de la configuración 环境变量:

Ingrese en la línea de comando:nexus /run

3. Después de que el nexo se inicie con éxito: Ingrese en el navegador:

http://localhost:8081/
  • La interfaz de inicio es la siguiente:

2. interfaz de nexo.png

Haga clic en el sign inbotón en la esquina superior derecha:

Ingrese 用户名和密码:

El sistema de nombre de usuario y contraseña le preguntará en qué directorio

4. Después de un inicio de sesión exitoso:

  • Haga clic en el botón Configuración en la barra de navegación -->repositorio para ingresar a la lista de repositorios

3. Construcción de almacén.png

4Almacén.png

  • Haga clic create Repositorypara crear un nuevo repositorio de red de área local:

Porque elegimos maven2 para el repositorio maven creado para el proyecto de Android:

5almacén maven.png

Hay tres repositorios de tipo maven2 aquí:

*hosted*: El servidor privado LAN local, como el almacén oficial, proporciona la función de biblioteca privada local

*proxy*: proporciona la función de proxy de otros almacenes, lo que indica que este repositorio puede proxy de almacenes remotos, jcenter googlecomo almacenes centrales remotos como

*group*:组合多个仓库为一个地址使用

这里我们选择hosted仓库即可,大家可以根据自己需求选取

6maven.png

1.输入仓库名称

2.设置maven类型:

*release*:表示是一个该仓库存储的是一个release版本的第三方库

*snapshot*:表示存储的是一个不稳定第三方库,需要进程去私服或者中央仓库拉数据:

<repositorys>
    <repository>
        <id>****</id>
        <url>***</url>
        <snapshots>
            <enabled>true</enabled>
            <updatePolicy>(always/ daliy/  interval/ never)</updatePolicy>
        </snapshot>
    </repository>
</repository>

updatePolicy:表示更新的频率:

        always:每次都需要拉去     daliy:表示每天需要拉取     interval:按分钟拉取     nerver:和release版本一样,不需要重复拉取

点击确定后就创建的一个maven私服:

点击该仓库就可以看到对应的url,这个url就是我们私服的地址。需要在项目中引用:

7maven.png

经过上面的步骤后,我们就搭建好了一个maven私服,局域网内用户都可以拉取使用

实战中maven私服接入:

1.第三方lib库的上传操作

使用as创建一个新的项目,在新建项目下创建一个lib库,命名为:lib_vedio:并在lib_vediobuild.gradle工程文件下面,引入maven库:

实现uploadArchives的task方法:这个方法用于上传lib库:

plugins {
    id 'com.android.library'
    id 'maven'
}

//上传的类库名称
def _artifactId = this.getName() 
//类库版本
def pomVersionName = '1.0.1'
def pomName = this.getName()
//类库描述
def pomDescription = 'the vedio library for all project'

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url:NEXUS_REPOSITORY_URL) {
                authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
            }
            pom.project {
                name pomName
                version pomVersionName
                description pomDescription
                artifactId _artifactId
                groupId POM_GROUPID
                packaging POM_PACKAGING
            }
        }
    }
}

里面一些变量是在gradle.properties中设置的全局变量:

NEXUS_REPOSITORY_URL=http://localhost:8081/repository/anna_release/
POM_GROUPID=com.anna.android
POM_PACKAGING=aar
NEXUS_USERNAME=admin
NEXUS_PASSWORD=admin123456

设置好后,执行uploadArchives任务,这个时候我们本地的lib_vedio库就会上传到我们之前搭建的maven私服上:

8maven.png

这里因为我们上传了两个版本1.0.0和1.0.1

切记:

如果当前仓库选择的是release属性:则每次上传的版本不能一致,需要在原版本基础上增加

如果选择的是snapshot属性:则可以在不增加版本号的前提下,修改同一版本的代码并上传。

maven私服仓库的接入:

我们在项目的build.gradle文件中引入maven库:

buildscript {
    repositories {
        google()
        jcenter()
        maven {
            url = 'http://localhost:8081/repository/anna_release/'
            credentials {
                username = 'admin'
                password = 'admin123456'
            }
        }

    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.1.1"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven {
            url = 'http://localhost:8081/repository/anna_release/'
            credentials {
                username = 'admin'
                password = 'admin123456'
            }
        }
    }
}

并在app模块引入lib库文件:

implementation 'com.anna.android:lib_video:1.0.1'

这样就可以在我们项目中愉快使用类库啦。

总结

Eso es todo para el repositorio maven. En el futuro, presentaremos la función de encapsulación de cada componente en el desarrollo por componentes y el desacoplamiento de la predependencia directa del componente, es decir, el uso del marco de código abierto de Alibaba en ruta, y cómo implementar pruebas separadas de los componentes.

Supongo que te gusta

Origin juejin.im/post/7118646272323485709
Recomendado
Clasificación