【Android Studio Gradle】使用Artifactory构建本地仓库

article/2025/7/13 14:30:09

文章目录

  • 1. 说明
    • 1.1 本地安装Gradle
    • 1.2 构建本地仓库
      • 1.2.1 常见镜像地址
      • 1.2.2 使用Artifactory构建本地仓库
  • 2. 最终配置

1. 说明

在运行gradlew assemble的时候,出现了gradle的官网:Gradle User Manual
下面就简单来学习一下。简介:

  • Gradle是一个开源自动构建工具,关注于灵活性和性能,通常使用Groovy或者Kotlin编写;
  • 特点有:高定制性,更快,更有效。

Gradle支持很多IDE,包括:Android Studio, Eclipse, IntelliJ IDEA, Visual Studio 2019, and XCode。甚至可以直接使用命令行模式来执行。因为这里所需要的是Android Studio中的相关运用,所以这里可以参考文档:Building Android Apps Sample。

1.1 本地安装Gradle

为了方便之后的使用,这里本地在环境变量中配置一个Gradle,版本为7.2
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kY0w47rI-1648647006749)(images/screenshot_1648605875060.png)]

下载地址:Gradle | Releases
解压到任意目录:
在这里插入图片描述

然后配置环境变量即可,添加目录:D:\softwares\Android\gradle-7.2-bin\gradle-7.2\bin到用户Path即可。

1.2 构建本地仓库

在应用的build.gradle文件中默认配置为:

allprojects {repositories {google()jcenter()}
}

而,googlejcenter均位于国外,且jcenter仓库自去年起就不再提供服务了。在我的博客:# 上传Android library到JitPack一文中也提到了我们可以将自己的工具发布到第三方库,然后方便自己的使用。但总体来说比较麻烦,而且有些库因为还没有开发稳定,也不想发布到公开平台。所以处于如下原因我们可能需要自己构建一个仓库:

  • 速度!因为google位于国外,即使使用了阿里的镜像,但是还是每次需要下载,就略慢;
  • 方便!方便本地自己引入一个自己所需要的库,而不需要增大项目的额外成本;

1.2.1 常见镜像地址

allprojects {repositories {maven { url 'https://maven.aliyun.com/repository/jcenter' }maven { url 'https://maven.aliyun.com/repository/google' }maven { url 'https://repo.huaweicloud.com/repository/maven' }maven { url 'https://jitpack.io' }mavenCentral()google()jcenter()}
}

1.2.2 使用Artifactory构建本地仓库

构建本地仓库可选:nexus或者Artifactory。这里使用Artifactory来完成。下载地址:Downloads
解压下载好的安装包,打开解压后文件夹下的bin文件夹,运行artifactory.bat,然后等待安装完成。
在这里插入图片描述
访问地址:http://localhost:8082/ui/login/
登录:
在这里插入图片描述

然后,就可以设置一下远程仓库地址,这里我使用阿里云提供的镜像地址:仓库服务 (aliyun.com)。常见对应关系:

仓库名称阿里云仓库地址阿里云仓库地址(老版)源地址
centrahttps://maven.aliyun.com/repository/centrahttps://maven.aliyun.com/nexus/content/repositories/centrahttps://repo1.maven.org/maven2/
jcenterhttps://maven.aliyun.com/repository/publichttps://maven.aliyun.com/nexus/content/repositories/jcenterhttp://jcenter.bintray.com/
publichttps://maven.aliyun.com/repository/publichttps://maven.aliyun.com/nexus/content/groups/publiccentral仓和jcenter仓的聚合仓
googlehttps://maven.aliyun.com/repository/googlehttps://maven.aliyun.com/nexus/content/repositories/googlehttps://maven.google.com/

然后在后天添加远程仓库:
在这里插入图片描述

也就是添加上面的四个即可,当然在选择的时候选择Maven。然后就可以创建一个本地仓库,供我们项目中直接使用。还是在Repositories选项卡,选择local,创建一个android_local的仓库:

在这里插入图片描述
提交后,就可以看见刚刚创建的android_local仓库:
在这里插入图片描述
然后创建一个虚拟仓库,还是选择Maven,然后指定名字为android_group,并将所有可用的仓库移动到selected repositories中,如下图:
在这里插入图片描述
然后我们就可以在我们的应用中只使用这个虚拟仓库,在控制台可以找到其映射地址:

在这里插入图片描述
也就是:

http://localhost:8082/artifactory/android_group/

但是很不幸,通过浏览器访问发现需要用户名和密码:
在这里插入图片描述
当然,我们通过浏览器可以输入前面的用户名和密码来访问,但是一般在作为仓库使用的时候,我们都需要配置匿名才行。故而这里还需要继续进行配置。也就是允许匿名访问:
在这里插入图片描述
正如上图所示,默认是不支持的,这里需要勾选,然后保存即可。

然后在gradle-wrapper.properties文件中配置gradle文件,因为在前面已经下载过gradle-7.2,所以这里本地仓库中直接使用这个,在控制台进行上传:
在这里插入图片描述
选择带上传图标的Deploy进行上传。当然,首先设置一下上传文件大小,因为在General->settings中:
在这里插入图片描述
所默认的上传大小为100MB这里修改为1024MB,即:
在这里插入图片描述
然后再次回到android_local仓库,进行上传文件:

在这里插入图片描述
点击刚上传的这个文件,就可以看到文件的URL地址:
在这里插入图片描述
也就是:

http://localhost:8082/artifactory/android_local/gradle-7.2-bin.zip

所以,我们在gradle-wrapper.properties文件中配置的为:

distributionUrl=http\://localhost:8082/artifactory/android_local/gradle-7.2-bin.zip

对应的:
在这里插入图片描述
注意到上图中http有黄色警告,也就是最好使用https的链接,这里我们忽略。对应的配置repositories地址,如下。找到项目的build.gradle文件,原配置文件为:

buildscript {ext.kotlin_version = "1.4.32"repositories {google()jcenter()}dependencies {classpath 'com.android.tools.build:gradle:7.1.2'classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.30"}
}allprojects {repositories {google()jcenter()}
}

修改后:

buildscript {ext.kotlin_version = "1.4.32"repositories {maven {url 'http://localhost:8082/artifactory/android_group/'}
//        google()
//        jcenter()}dependencies {classpath 'com.android.tools.build:gradle:7.1.2'classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.30"}
}allprojects {repositories {maven {url 'http://localhost:8082/artifactory/android_group/'}}
}

但是很不幸这里构建失败。也就是其实不支持Http协议的,这里可以配置一个允许命令即:

maven {allowInsecureProtocol trueurl 'http://localhost:8082/artifactory/android_group/'
}

然后进行前后两次同步,可以看见构建时间从第一次的2m多到几秒钟。使用本地仓库,明显提升了构建速度。

2. 最终配置

最终的应用程序build.gradle文件为:

buildscript {ext.kotlin_version = "1.4.32"repositories {maven {allowInsecureProtocol trueurl 'http://localhost:8082/artifactory/android_group/'}}dependencies {classpath 'com.android.tools.build:gradle:7.1.3'classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.30"}
}allprojects {repositories {maven {allowInsecureProtocol trueurl 'http://localhost:8082/artifactory/android_group/'}}
}task clean(type: Delete) {delete rootProject.buildDir
}

settings.gradle文件:

rootProject.name = "My Application"
include ':app'

app模块的build.gradle文件:

plugins {id 'com.android.application'id 'kotlin-android'
}android {compileSdk 31defaultConfig {applicationId "com.weizu.myapplication"minSdk 25targetSdk 31versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}kotlinOptions {jvmTarget = '1.8'}
}dependencies {implementation 'androidx.core:core-ktx:1.7.0'implementation 'androidx.appcompat:appcompat:1.3.0'implementation 'com.google.android.material:material:1.4.0'implementation 'androidx.constraintlayout:constraintlayout:2.0.4'testImplementation 'junit:junit:4.13.2'androidTestImplementation 'androidx.test.ext:junit:1.1.3'androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

http://chatgpt.dhexx.cn/article/U4GxYLXF.shtml

相关文章

如何使用TF卡和阿里云盘给surface pro扩容

surface pro作为一款优秀的二合一平板电脑,其特点是轻盈小巧,能够满足日常办公需求,但是随着硬盘增大,价格飞涨,所以现在很多人处于硬盘不够用的窘境,本文介绍两种方法来给surface pro扩容。 话不多说&…

阿里云 SDK 动态IP域名解析

阿里云提供 aliyun sdk&#xff0c;可以通过申请获得的 <accessKeyId> 和 <accessSecret> 在 sdk 环境下&#xff0c;直接控制相应账号下阿里云的所有产品&#xff0c;例如设置域名解析、启动VPC、或者推送短信等等。 目录 获取阿里云key 代码测试 读取解析信息…

图标字体收藏

智能LOGO设计生成器 最值得收藏的Bootstrap免费字体和图标网站 一. PNG透明图片素材网站&#xff0c;谁懒谁用呗。 1. PngImg号称是全世界最大的PNG透明背景图库&#xff0c;目前网站上收集了45000张左右去背图素材&#xff0c;都可以免费下载&#xff0c;并且允许非商业性使…

解密国内 BAT 等大厂前端技术体系之阿里篇

前端框架的不断变化&#xff0c;对不同行业产生了诸多的影响。目前&#xff0c;前端的发展趋势究竟是什么样的&#xff1f;为了解更多的前端趋势相关内容&#xff0c;让我们跟随本文&#xff0c;看一下像阿里巴巴这样的互联网大厂&#xff0c;是怎样做的。 进入 2019 年&#x…

解密国内BAT等大厂前端技术体系-阿里篇(长文建议收藏)

进入2019年&#xff0c;大前端技术生态似乎进入到了一个相对稳定的环境&#xff0c;React在2013年发布至今已经6年时间了&#xff0c;Vue 1.0在2015年发布&#xff0c;至今也有4年时间了。 整个业界在前端框架不断迭代中&#xff0c;也寻找到了许多突破方向&#xff0c;例如跨…

vue调试工具devtoos 初探;vue阿里图标库的引用;解决子组件内容不刷新的问题;

记录几个比较有用的功能点&#xff1a; 一&#xff0c;关于前端调试 可能是我的意识还是在Visual C层面&#xff0c;在我的理解里面&#xff0c;如果没有单步跟踪&#xff0c;那就不是在编程。看到之前的前端同事开发程序的时候都是不停的用console.log&#xff0c;感觉效率很…

购物车--订单模块,练习完成

目标&#xff1a; 在购物车页面&#xff0c;增加一个创建订单的超链接。通过创建订单&#xff0c;在Order表里新增一条数据&#xff0c;同时把session中的订单条目都保存到数据库中。 1、创建两个表&#xff0c;orders用来具体存储每一个订单的细节&#xff0c;order_用来存储…

订单操作-查询所有订单代码实现

订单查询 订单查询页面 order-list.jsp Controller Controller RequestMapping("/orders") public class OrdersController {Autowiredprivate IOrdersService ordersService;//未分页RequestMapping("/findAll.do")public ModelAndView findAll(Request…

企业网上下单订货管理软件源码搭建功能介绍|移讯云订货通订单管理系统

网上下单订货管理软件源码搭建功能介绍|移讯云订货通订单管理系统 一&#xff1a;系统概述和用途 系统基于网络&#xff0c;实现厂家和代理商批发商通过网络下单订货功能。 什么是移讯云订货通。什么是企业订货管理系统。 是一款针对中小型企业通过网络实现&#xff0c;厂家…

订单服务-----功能实现逻辑

订单服务的实现流程&#xff08;确认订单->提交订单->支付&#xff09; 1、整合SpringSession 使用SpringSession的目的是来解决分布式session不同步不共享的问题&#xff0c;其实就是为了让登录信息在订单微服务里共享 注意&#xff1a;由于这里使用springsession的用…

SMBMS订单管理系统(手把手教细致讲解实现全过程) (七)

实现用户管功能 刚刚访问密码直接走前端 现在要发起请求走Servlet&#xff0c;Servlet处理后返回前端页面 Servlet 处理请求调用业务返回页面 业务要查询用户列表&#xff0c;查询角色列表&#xff0c;为了实现分页&#xff0c;需查询pageSize总数。查询从Service层到Dao层…

【电商开发手册】订单-下单

下单需求 所谓下单&#xff0c;本质上就是买卖双方通过确认一系列信息并且签订电子合同的过程 在电商平台的下单过程中&#xff0c;也需要确定买卖双方的一系列信息&#xff1a; 买方&#xff1a;用户确认收货地址、支付方式、配送方式等等 卖方&#xff1a;卖方需要进行供…

如何规范业务管理过程?低代码平台助力订单管理系统建设

编者按&#xff1a;本文介绍了订单管理系统的概念以及作用&#xff0c;并进一步展现了低代码平台是如何为企业实现订单管理科学化&#xff0c;规范业务管理过程的。 关键词&#xff1a;老厂商&#xff0c;流程管理&#xff0c;订单管理 什么是订单管理系统 订单管理系统(OMS)…

【网课平台】Day13.订单支付模式:生成支付二维码与查询支付

文章目录 一、需求&#xff1a;生成支付二维码1、需求分析2、表设计3、接口定义4、接口实现5、完善controller 二、需求&#xff1a;查询支付结果1、需求分析2、表设计与模型类3、接口定义4、接口实现步骤一&#xff1a;查询支付结果步骤二&#xff1a;保存支付结果&#xff08…

简单的订单系统

目录 一、数据库方面 二、jdbc配置文件 三、JDBC工具类 三、Users类 四、功能实现类 五、运行结果 一、数据库方面 USE foodmenu; DROP TABLE IF EXISTS menu7; CREATE TABLE menu7(num INT PRIMARY KEY,TypeDishes VARCHAR(255))CHARSETutf8; INSERT INTO menu7(num,Type…

天翎低代码平台实现的订单管理系统

编者按&#xff1a; 本文 主要介绍了基于天翎低代码平台实现的 订单管理系统以及 优势 &#xff0c;并进一步展现了低代码平台是如何为企业实现订单管理科学化 和 规范业务管理过程。 关键词&#xff1a;低代码平台、订单管理系统 1.订单管理系统是什么&#xff1f; 订单管理系…

初学订单-支付流程(思路)

主要说的是 生成订单的一系列操作 生成订单号---确认支付---生成支付链接--支付流程 支付流程 ---1.获取支付链接 1.1 三方接口&#xff0c;发送数据 ----1.2 返回数据解析&#xff08;包含支付订单id&#xff09;将链接也返回前端 ----2.进行支付 2.1 扫码支付 2.2 支付成…

订单系统的代码实现

面向接口的编程&#xff1a; 面向接口编程(Interface Oriented Programming:OIP)是一种编程思想&#xff0c;接口作为实体抽象出来的一种表现形式&#xff0c;用于抽离内部实现进行外部沟通&#xff0c;最终实现内部变动而不影响外部与其他实现交互&#xff0c;可以理解成按照这…

【码学堂】教师如何在码学堂上组织教学活动?

码学堂简介 码学堂是由贵州师范学院数学与大数据学院研发的智慧教学平台&#xff0c;学生可以自主练习&#xff0c;教师可以组织练习、考试、竞赛、共享题库、共享教学资源&#xff0c;支持判断题、单项选择题、多项选择题、填空题、程序函数题、程序填空题、编程题、主观题8种…