Sonatype Nexus兼容apk格式仓库

Sonatype Nexus兼容apk格式仓库

sonatype/nexus3
当前最新版本:sonatype/nexus3:3.52.0

查看nexus支持的仓库格式

创建一个nexus 容器:

docker run -d -p 8081:8081 --name nexus sonatype/nexus3:3.52.0

查看启动日志:

docker logs nexus -f

访问nexus 仓库:
在这里插入图片描述
进入容器查看初始密码:

docker exec -it nexus bash

cat /nexus-data/admin.password

通过查看Repositories可以看到支持的仓库格式:
在这里插入图片描述
可以发现sonatype/nexus3:3.52.0版本是不支持apk格式的仓库的
如果以apt格式配置apk的仓库,例如:
https://dl-cdn.alpinelinux.org/alpine/
会有如下的报错:

xxx package mentioned in index not found (try 'apk update')

即使执行了apk update后仍然无法从nexus地址下载仓库资源
在这里插入图片描述

配置第三方插件nexus-repository-apk

nexus-repository-apk
插件与nexus版本兼容关系:向上兼容

Plugin VersionNexus Repository Version
v0.0.13.19.0-01
v0.0.83.23.0-03
v0.0.123.28.0-01
v0.0.183.30.0-01
v0.0.193.31.0-01
v0.0.243.38.0-01
v0.0.263.41.0-01

通过github拉取源码后进行编译:

mvn clean package -PbuildKar

编译完成后,将路径:

  • nexus-repository-apk/target/nexus-repository-apk-0.0.26-bundle.kar

文件复制到nexus下的/opt/sonatype/nexus/deploy/

具体的印射方法为:

docker run -d --name nexus -p 8081:8081 -v $文件目录:/opt/sonatype/nexus/deploy/ -e  sonatype/nexus3:3.52.0

再次重启nexus可以看到,已经可以支持apk格式的仓库了:
在这里插入图片描述

// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext { agp_version = '4.1.3' } ext.kotlin_version = '1.4.10' repositories { maven { url 'https://maven.aliyun.com/repository/public/' } google() mavenCentral() maven {url 'https://developer.huawei.com/repo/'} // 华为 maven 仓库地址 maven {url "https://mvn.mob.com/android"} //maven { url "https://jitpack.io" } } dependencies { classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' // 添加的部分 classpath "com.android.tools.build:gradle:$agp_version" classpath "io.realm:realm-gradle-plugin:3.7.2" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" //classpath 'com.jakewharton:butterknife-gradle-plugin:10.1.0' classpath 'com.huawei.agconnect:agcp:1.4.2.300' // 华为推送 gradle 插件依赖 classpath "com.mob.sdk:MobSDK:+" classpath 'com.jakewharton:butterknife:10.1.0' classpath 'com.jakewharton:butterknife-compiler:10.1.0' } } allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/public/' } maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' } maven { url "https://maven.aliyun.com/nexus/content/repositories/releases" } google() mavenCentral() flatDir { dirs '../baseproject/libs','../imchat/libs' } maven { url "https://jitpack.io" } maven {url "https://raw.github.com/bmob/bmob-android-sdk/master" } maven { url 'https://developer.huawei.com/repo' } } } tasks.register('clean', Delete) { delete rootProject.buildDir } ext { // yss_versionCode = 30 yss_versionName = '1.3.0' // mxyy_versionCode = 80 mxyy_versionName = '1.1.0' // Sdk and tools compileSdkVersion = 30 buildToolsVersion = '30.0.0' minSdkVersion = 19 targetSdkVersion = 30 // App dependencies supportVersion = '28.0.0' constraintLayoutVersion = '1.1.3' butterknifeVersion = '10.1.0' gsonVersion = '2.8.9' autolayoutVersion = '1.4.5' videocacheVersion = '2.6.4' photoViewVersion = '1.2.7' imageLoaderVersion = '1.9.5' observablescrollviewVersion = '1.6.0' // rxjavaVersion = '1.3.0' rxAndroidVersion = '1.2.1' okhttp3Version = '4.9.3' okhttp3LogVersion = '4.9.3' retrofit2GsonVersion = '2.9.0' retrofit2RxjavaVersion = '2.4.0' retrofit2Version = '2.9.0' eventbusVersion = '3.0.0' }
最新发布
03-29
<think>嗯,用户让我分析一个Android项目的顶级构建文件,也就是`build.gradle`。首先,我需要理解这个文件的结构和各个部分的作用。用户可能是个Android开发者,或者刚开始学习Gradle配置,他们想了解这个文件里各个配置的意义,以及如何优化或解决潜在的问题。 首先,我会看看`buildscript`块。这里定义了Gradle插件和依赖项。`ext`块中的`agp_version`和`kotlin_version`是项目变量,用来统一管理版本号,方便后续维护。注意到用户用了阿里云的Maven仓库,可能是为了加速依赖下载。还有华为的仓库和MobSDK,说明项目可能集成了华为服务和第三方分享登录功能。但这里有个问题,`classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'`这个插件已经过时了,因为ButterKnife现在应该用注解处理器直接引入,或者使用新的插件,比如`kotlin-kapt`。用户可能还在用旧版的ButterKnife配置,需要注意兼容性问题。 然后看`allprojects`块,里面配置了所有子模块的仓库地址,同样用了阿里云镜像,还有JitPack、Bmob、华为仓库等。这里可能有第三方库依赖来自这些仓库。不过`flatDir`指定了本地libs目录,需要注意路径是否正确,特别是如果项目结构复杂的话。 接下来是`clean`任务,用来删除根项目的构建目录,这是标准的配置。 `ext`块定义了很多版本号和依赖版本,比如`compileSdkVersion`是30,但现在的Android开发已经推荐使用更高的版本,比如34。用户的项目可能有点旧,或者需要维护旧版兼容。同时,ButterKnife的版本是10.1.0,但结合前面的android-apt插件,可能存在冲突,因为ButterKnife 10+应该使用annotationProcessor而不是android-apt。这可能是配置错误,会导致构建失败。 另外,依赖库中有一些已经过时的版本,比如Support库是28.0.0,应该迁移到AndroidX。Retrofit和OkHttp的版本看起来是较新的,但RxJava还是1.x版本,建议升级到RxJava2或3以获得更好的支持和性能。 用户可能遇到的问题是构建时的插件冲突,或者某些库版本不兼容。例如,ButterKnife和android-apt的使用方式是否正确,或者华为推送插件的版本是否需要更新。此外,仓库地址的顺序可能会影响依赖解析,比如有些仓库可能没有所需的库,需要检查是否所有依赖都能正确下载。 总结下来,这个配置文件的优化点包括:更新过时的插件和依赖版本,替换android-apt为kapt,迁移到AndroidX,检查仓库地址的有效性,确保所有依赖库的兼容性。同时,需要注意Gradle版本与AGP(Android Gradle Plugin)版本的匹配,避免因版本不兼容导致的构建错误。</think>这个文件是Android项目的顶级构建脚本(Top-level build.gradle),主要用于配置全局构建属性和管理项目级依赖。以下为你逐步解析其主要构成和作用: --- ### 一、buildscript 闭包(构建脚本配置) ```groovy buildscript { ext { // 定义全局变量 agp_version = '4.1.3' // Android Gradle插件版本 kotlin_version = '1.4.10' // Kotlin版本 } repositories { // 配置依赖仓库 maven { url 'https://maven.aliyun.com/repository/public/' } // 阿里云镜像加速 google() // 谷歌官方仓库 mavenCentral() // Maven中央仓库 maven { url 'https://developer.huawei.com/repo/' } // 华为仓库 maven { url "https://mvn.mob.com/android" } // MobTech仓库 } dependencies { // 配置Gradle插件依赖 classpath "com.android.tools.build:gradle:$agp_version" // Android构建工具 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // Kotlin插件 classpath 'io.realm:realm-gradle-plugin:3.7.2' // Realm数据库插件 classpath 'com.huawei.agconnect:agcp:1.4.2.300' // 华为推送服务 classpath "com.mob.sdk:MobSDK:+" // Mob分享/登录SDK } } ``` #### **关键点说明** 1. `ext` 块定义全局变量,方便多模块版本统一管理 2. `repositories` 配置依赖下载源(国内镜像加速) 3. `classpath` 声明构建工具插件(这些插件不会被编译到APK中) --- ### 二、allprojects 闭包(全局项目配置) ```groovy allprojects { repositories { // 所有子模块共享的仓库配置 maven { url 'https://maven.aliyun.com/repository/public/' } google() mavenCentral() maven { url "https://jitpack.io" } // 常用开源库仓库 maven { url 'https://raw.github.com/bmob/bmob-android-sdk/master' } // Bmob后端云 } } ``` #### **主要作用** - 定义所有子模块(modules)共享的依赖仓库 - `flatDir` 用于引入本地aar/jar文件 --- ### 三、clean 任务(清理构建文件) ```groovy tasks.register('clean', Delete) { delete rootProject.buildDir // 删除根项目的build目录 } ``` --- ### 四、ext 扩展属性(全局版本控制) ```groovy ext { // 应用版本信息 yss_versionCode = 30 yss_versionName = '1.3.0' // SDK版本配置 compileSdkVersion = 30 minSdkVersion = 19 targetSdkVersion = 30 // 第三方库版本 supportVersion = '28.0.0' // 已过时,建议迁移至AndroidX okhttp3Version = '4.9.3' retrofit2Version = '2.9.0' rxjavaVersion = '1.3.0' // 建议升级RxJava2/3 } ``` --- ### 五、需要注意的问题 1. **过时依赖警告**: - `com.neenbedankt.gradle.plugins:android-apt` 已废弃,ButterKnife建议使用 `annotationProcessor` - Support库 (`supportVersion = '28.0.0'`) 应迁移至AndroidX 2. **版本兼容性**: - AGP 4.1.3 对应Gradle 6.5+(需检查`gradle-wrapper.properties`) - Kotlin 1.4.10 需与Java 8兼容 3. **安全建议**: - MobSDK使用`+`通配符存在版本不稳定风险,建议固定版本号 --- ### 六、典型配置优化方向 1. 迁移至AndroidX 2. 升级RxJava到2.x/3.x版本 3. 替换ButterKnife为ViewBinding 4. 使用Gradle Version Catalogs统一管理依赖 如果需要具体某个配置的优化方案,可以告诉我你需要改进的功能模块。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值