Maven 私有倉庫搭建
筆者曾經不思量力的思考過『是什麼推動了網際網路技術的快速發展?』
這種偉大的命題。結論是,除了摩爾定律之外,技術經驗的快速積累和廣泛分享
,也是重要的原因。
有人戲稱,『寫 Java,首先要學會選包』,在這裡不好評論對錯。不過這句話裡面,至少包含兩層意思:首先 Java 有大量的現成的依賴包,不必要自己造輪子;其次,Java 的包存放較為集中,整合方式也方便。
筆者從事 Android 和 Java 開發以來,經歷了幾個階段:
閉門造輪子
> 使用別人的輪子 > 開門造輪子 > 分享輪子
在使用、創造、分享輪子的過程中,maven 倉庫的使用可謂必備技能。
相信各位使用 Android Studio,對於 jcenter()
、mavenCentral()
等概念應該是司空見慣了。程式設計師要知其然,知其所以然。本篇將按照如下脈絡介紹在
Android Studio 中 Maven 倉庫相關的概念和應用。
- Maven 包
- Maven 倉庫
- 釋出包到本地倉庫
- 釋出包到 Bintray Jcenter 遠端倉庫
- 釋出包到 Sonatype MavenCentral 遠端倉庫
- 搭建私有 Sonatype 倉庫
- 搭建私有 Artifacotory 倉庫
Maven 包(Package)
對於 Android 開發者而言,只需要知道 Maven 是一種構建工具,Maven 包是由所謂 POM(Project Object Model)所定義的檔案包格式即可。
Gradle 可以使用 Maven 包,而且大部分的 Android 能夠使用的遠端依賴包都是 Maven 包。
先來看一個託管在某倉庫上的 Maven 包:Bugtags-Android-Lib 所包含的內容:
1 2 3 4 5 6 7 8 |
bugtags-lib-1.1.0-javadoc.jar//javadoc 檔案 bugtags-lib-1.1.0-javadoc.jar.asc//javadoc 檔案的簽名 bugtags-lib-1.1.0-sources.jar//原始碼檔案 bugtags-lib-1.1.0-sources.jar.asc//原始碼檔案的簽名 |
對於一個合符規範的 Maven Package,pom
檔案、aar(或者 jar) 檔案
是必須的。
而 javadoc 檔案、原始碼檔案、簽名檔案都不是必要的,但是某些公開倉庫
(如
mavenCentral )有此要求。
使用這個包的方式,相信大家已經很熟悉了:
1 2 3 |
dependencies { compile 'com.bugtags.library:bugtags-lib:1.1.0' } |
POM 檔案
一個 Maven Package,最重要就是 POM(Project Object Model) 檔案,這其實是一個 XML 檔案,這裡擷取 Bugtags-Android-Lib POM 主要內容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
"1.0" encoding="UTF-8" xml version= <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <groupId>com.bugtags.library</groupId> <artifactId>bugtags-lib</artifactId> <version>1.1.0</version> <packaging>aar</packaging> <dependencies> <dependency> <groupId>com.android.support</groupId> <artifactId>support-v4</artifactId> <version>19.0.0</version> <scope>compile</scope> </dependency> </dependencies> </project> |
- modelVersion: 從 mvn 2.x 起,這個數值都是4.0.0
- packaging:打包方式,aar 是 Android Libirary 的打包方式,常用的還有 jar
- dependency:宣告依賴列表
-
包的唯一標示:
1 2 3 4 5 6
<!--包組 id,通常是釋出者擁有的域名的反向,以免跟別人的重複--> <groupId>com.bugtags.library</groupId> <!--包 artifactId,不好意思我也不知道如何準確翻譯,其實就是組以下應該有一個更小的歸類--> <artifactId>bugtags-lib</artifactId> <!--包版本--> <version>1.1.0</version>
其中三個欄位與 Gradle 的依賴格式
'com.bugtags.library:bugtags-lib:1.1.0'
冒號分割的三段一一對應。這就解釋了所謂的Gradle 相容 Maven 包
。
Maven 倉庫
Maven 包集中存放的地方,就是 Maven 倉庫。這些倉庫,可以是放在本地,也可以放在某個遠端伺服器上。 可以是私有倉庫,也可以是公開的。下面是筆者日常開發用的庫列表:
1 2 3 4 5 6 7 8 |
mavenCentral(); jcenter() maven { url 'file:///Users/my-user-name/Documents/Android/repo/' } maven { url 'http://192.168.99.100:8081/content/repositories/releases/' } |
Android Studio Gradle 主要支援兩個 Maven 中央庫:mavenCentral
和 jcenter
。
- mavenCentral 是最早的 maven 中央倉庫
- jcenter 是 Android Studio 0.8 版本起的預設 maven 中央倉庫
- 第三個是筆者的本機的倉庫
- 第四個是筆者部署在內網伺服器的私有倉庫
讀者可能會發現兩個問題:
- 為什麼有了 mavenCentral,谷歌還切換到了 jcenter?
-
maven { url : xxx}
,這種格式可以配置任何一個存在的倉庫?
解釋如下:
jcenter VS. mavenCentral
根據這篇部落格,jcenter 具有如下優勝特點,使得谷歌進行切換:
- jcenter 是一個 mavenCentral 的超集,jcenter 還包含了其他 maven 包
- jcenter 具有更好的 cdn,預設支援 https,這個對於谷歌有巨大吸引力
- bintray(jcenter 的服務提供商)表示 jcenter 具有更好的效能
- 有資料表明 bintray jcenter 佔用更少的本地快取空間
- 更好的互動介面,可以從 jcenter 向 mavenCentral 同步包(下面兩個平臺的使用教程將會證實這一點)
筆者親測,在 bintray 上釋出包到 jcenter 在易用性上的確比 在 sonatype 釋出到到 mavenCentral 要好得多。
使用符合規範的 maven 倉庫
沒錯,你可以通過 maven
{ url : xxx }
使用任何一個符合 maven 規範的倉庫。
-
相關推薦
Maven 私有倉庫搭建
筆者曾經不思量力的思考過『是什麼推動了網際網路技術的快速發展?』這種偉大的命題。結論是,除了摩爾定律之外,技術經驗的快速積累和廣泛分享,也是重要的原因。 有人戲稱,『寫 Java,首先要學會選包』,在這裡不好評論對錯。不過這句話裡面,至少包含兩層意思:首先 Ja
通過Nexus搭建maven私有倉庫,並通過gradle上傳jar
pre install oss 通過 epo 選擇 配置 容器 ffffff 安裝nexus 安裝docker``·bashyum install docker-ce 拉取鏡 docker pull registry.docker-cn.com/sonatype/nex
實戰maven私有倉庫三部曲之一:搭建和使用
在區域網內搭建maven私有倉庫,可避免每次都從中央倉庫下載公共jar包,另外將A模組作為二方庫釋出到私有倉庫後,B模組可以很方便的引用,今天我們就來實戰maven私有倉庫的搭建和使用; 環境資訊 安裝私有倉庫的機器是ubuntu16,IP是192.1
【Maven】Nexus3搭建Maven私有倉庫及使用
Maven庫 remote repository:相當於公共的倉庫,大家都能訪問到,一般可以用URL的形式訪問 local repository:存放在本地磁碟的一個資料夾,例如,windows上預設是C:\Users\{使用者名稱}\.m2\repository目錄 R
CentOS 初體驗十六:阿里雲安裝Nexus搭建Maven私有倉庫
簡介 mavenCentral 是最早的 maven 中央倉庫。 私有伺服器,是公司內部 Maven 專案經常需要的,Nexus 是常用的私用 Maven 伺服器, Nexus 被超過10萬個開發團隊所使用。 本次搭建私有倉庫用的是阿里雲伺服器,系
Docker學習之搭建maven私有倉庫
2018-05-21 07:00:00,772+0000 INFO [quartz-5-thread-1] *SYSTEM org.sonatype.nexus.quartz.internal.task.QuartzTaskInfo - Task 'Storage facet cleanup' [repos
Nexus 搭建maven 私有倉庫
nexus 如果沒有私服,我們所需的所有構件都需要通過maven的中央倉庫和第三方的Maven倉庫下載到本地,而一個團隊中的所有人都重複的從maven倉庫下載構件無疑加大了倉庫的負載和浪費了外網頻寬,如果網速慢的話,還會影響專案的程序。很多情況下專案的開發都是在內網進行的
Nexus 3.x 搭建本地 Maven 私有倉庫
本文首發於我的部落格,歡迎訪問 官方介紹: The free artifact repository with universal support for popular formats. 10 million developers
Docker--------registry私有倉庫搭建 [ Http ]
registry docker docker hub 1. 背景 docker中要使用鏡像,一般會從本地、docker Hup公共倉庫和其它第三方公共倉庫中下載鏡像,一般出於安全和外網(墻)資源下載速率的原因考慮企業級上不會輕易使用。那麽有沒有一種辦法可以存儲自己的鏡像的倉庫呢? ----&
Docker私有倉庫搭建
docker 私有倉庫 由於公有倉庫有時連接會出現超時,下載速度慢等情況故搭建私有倉庫鏡像server端可以login官方的Doker Hub,可以pull,push和私有倉庫但client只能操作自己搭建的倉庫server 192.168.127.142client 192.168.1
docker-ce私有倉庫搭建
-i kernel perf process fault 系統 status secure nco 說明:本文中私有倉庫的ip地址為10.10.172.203:5000,操作系統為CentOS7.2;服務端:10.10.172.203/241、從Docker官方倉庫裏下載r
Spring Boot 多模塊與 Maven 私有倉庫
.project date content reporting pts fin plugin cond ssl 前言 系統復雜了,抽離單一職責的模塊幾乎是必須的;若需維護多個項目,抽離公用包上傳私有倉庫管理也幾乎是必須的。其優點無需贅述,以下將記錄操作過程。 1. 多模塊
CentOS 7 : Docker私有倉庫搭建和使用
docker reg expect use 啟動 倉庫 AR 通過 sel 系統環境: CentOS 7.2 192.168.0.179:docker倉庫 192.168.0.60:客戶端 安裝並啟動docker yum -y install docker system
Centos7 Docker私有倉庫搭建
Centos7 Docker私有倉庫搭建Centos7 Docker私有倉庫搭建 倉庫:集中存放鏡像的地方,可分為公共倉庫和私有倉庫(公共倉庫"http://hub.docker.com"或國內的"http://www.daocloud.io") 註冊服務器才是存放倉庫具體的服務器
Docker 私有倉庫搭建
down mark xen eric minutes ont gist epo man 我們在使用Docker時 下載鏡像一般都是在外網下載並使用。可是當我們沒有外網時我們不得不自己搭建私有倉庫。先看下流程圖: 下面我們開始搭建 私有倉庫1、安裝docker,並設置為開機自
Docker 私有倉庫搭建
訪問 本地 nginx 技術分享 director int 引用 dig ani 轉自:https://www.cnblogs.com/Tempted/p/7768694.html 環境準備 環境:兩個裝有Docker 17.09.0-ce 的centos7虛擬機 虛擬機一
【新功能】企業級Maven私有倉庫服務結束公測,全面開放使用
6.2 add ecn 方式 courier 設置 ask 創建 maven 摘要: 目前雲效上線了企業級Maven私有倉庫服務。用戶可以一鍵開通Maven私有倉庫服務,零配置實現私有二方庫的上傳和下載。經過半個月的公測,雲效中的企業級Maven私有倉庫服務正式上線,全面開
Docker 18.03私有倉庫搭建
外網 repos shadow iges -o test rime mct ted 我們在使用Docker時 下載鏡像一般都是在外網下載並使用。可是當我們沒有外網時我們不得不自己搭建私有倉庫。流程圖:docker 版本[root@docker ~]# docker vers
Docker 之 私有倉庫搭建
問題 很多 過程 load images fig.yml 實現 添加 接口 1 概述本文將介紹兩種方法搭建docker私有倉庫:基於docker-distribution 和 基於 harbor 搭建2 基於docker-distribution 的搭建docker
Docker 鏡像創建、私有倉庫搭建和數據管理
naconda 清除緩存 pro 管理操作 med recreate 環境變量 rom down Docker 鏡像的創建方法 Docker 鏡像除了是 Docker 的核心技術之外也是應用發布的標準格式。一個完整的 Docker 鏡像可以支撐一個 Docker 容器的運