Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發環境 >> Android 項目部署之Nexus私服的搭建和應用

Android 項目部署之Nexus私服的搭建和應用

編輯:Android開發環境

       一. 概述

       Nexus是一個基於maven的倉庫管理的社區項目.主要的使用場景就是可以在局域網搭建一個maven私服,用來部署第三方公共構件或者作為遠程倉庫在該局域網的一個代理.簡單舉幾個例子就是:

       1.第三方Jar包可以放在nexus上,項目可以直接通過Url和路徑配置直接引用.方便進行統一管理。

       2.同時有多個項目在開發的時候,一些共用基礎模塊可以單獨抽取到nexus上,需要用的項目直接從nexus上拉取就行(基礎模塊的實現,維護和部署可以交給專門的人員,其他項目不用關心代碼實現,這樣也可以達到保證核心代碼不洩露)。

       3.一些封閉開發的過程中開發機是不能上公網的,所以連接central repository和下載jar就比較麻煩,這時就可以用nexus搭建起來一個介於公網和局域網之間的橋梁。

       接下來就簡單介紹一下nexus的搭建以及在android項目中使用nexus的方式。

       二. 搭建

       1.下載&配置

       這裡使用的是Nexus OSS開源版,官網下載地址:http://www.sonatype.org/nexus/go/ ,博主的開發環境是ubuntu,所以就下載的TGZ壓縮的。

       把壓縮包解壓之後進入bin文件夾就可以運行shell腳本來啟動nexus,通過查看bin/nexus腳本發現可以修改腳本來適配自己的需求,例如修改Nexus的root路徑,如果需要以root身份來啟動Nexus就需要設置RUN_AS_USER=root,設置app名字和登陸名字等.也可以去conf/nexus.properties文件修改端口之類的信息。

       接下來直接運行Nexus腳本,查看一下該腳本支持幾個參數命令,將Nexus啟動起來(在這之前博主的Nexus已經啟動了所以就用的restart)

       2.創建倉庫

       從狀態上來看nexus已經啟動起來了,Nexus啟動之後就可以在浏覽器訪問類似 192.168.9.190:9999/nexus/ 地址,其中ip為當前服務器ip,端口Nexus默認為8081,可以在conf/nexus.properties文件中修改端口.進入web管理頁面後右上角登陸,Nexus默認的賬號密碼是admin:admin123,然後點擊左側的repositories查看現有的倉庫列表。

       這裡的倉庫分了四種類型

       1.hosted(宿主倉庫):用來部署自己,第三方或者公共倉庫的構件

       2.proxy(代理倉庫):代理遠程倉庫

       3.virtual(虛擬倉庫):默認提供了一個 Central M1虛擬倉庫 用來將maven 2適配為maven 1

       4.group(倉庫組):統一管理多個倉庫

       這裡以建立hosted倉庫為例簡單介紹Nexus在Android開發中的實際使用情況.點擊repositories->add 鍵入ID(部署項目的標識) Name等屬性,這裡需要注意的是,如果該倉庫有多次部署的情況的話,將policy設置為allow redeploy,不然後續在部署的時候會出現403錯誤。

       建立好新的倉庫之後需要配置一下相關賬號信息.在安全選項下選擇用戶選項,可以看到三個默認的賬號,分別是管理員賬號,部署賬號和Nexus賬號.正常訪問倉庫內容的時候是不需要這三個賬戶的,一般也就是把部署賬號暴露出去,方便倉庫項目維護人員部署項目使用.所以這裡可以用默認的Deployment賬戶(記得reset下密碼).也可以新建一個賬號來使用,新建的時候可以通過add role management來控制該賬號的權限。

       回到repositories選項就可以看到新建出來的倉庫,點擊倉庫URL可以直接進入到倉庫路徑,當然現在還沒有部署項目.到此為止搭建Maven私服Nexus端的配置和部署都已經完成,下面開始介紹Nexus Android端的配置部署和應用.

       3.Android端私服倉庫應用

       這裡就拿之前分析過的Android 4.4原生DeckClock程序舉例.Android 4.4 中的DeckClock項目需要依賴framework下的一個名叫datetimepicker的庫工程.這裡就把這個datetimepicker工程部署到Nexus上,讓DeskClock根據倉庫url和路徑進行訪問和datetimepicker版本控制。

       首先在DeskClock項目的build.gradle中配置之前建立的倉庫。

Java代碼
  1. allprojects {  
  2.     repositories {  
  3.         jcenter()  
  4.         mavenLocal()  
  5.     }  
  6.     dependencies{  
  7.         repositories {  
  8.             maven { url 'http://192.168.9.190:9999/nexus/content/repositories/jesse/' }  
  9.         }  
  10.     }  
  11. }  

       接下來需要從項目中把datetimepicker模塊剝離出來,因為我們要把它單獨部署到剛剛配置的倉庫裡,DeskClock項目直接依賴datetimepicker模塊改為通過Nexus依賴.剝離之後在datetimepicker模塊中的build.gradle文件中使用uploadArchives方法向指定倉庫上傳有效的aar文件.並且配置pom文件信息.目前配置是默認走repository中的倉庫,如果在版本號後面加上-SNAPSHOT就會走snapshotRepository中的倉庫.artifactId是該模塊的名字,groupId是倉庫包名路徑。

Java代碼
  1. uploadArchives {  
  2.     repositories {  
  3.         mavenDeployer {  
  4.             snapshotRepository(url: 'http://192.168.9.190:8081/nexus/content/repositories/jesse-snapshot/') {  
  5.                 authentication(userName: 'Jesse', password: 'jesse')  
  6.             }  
  7.   
  8.             repository(url: 'http://192.168.9.190:8081/nexus/content/repositories/jesse/') {  
  9.                 authentication(userName: 'Jesse', password: 'jesse')  
  10.             }  
  11.   
  12.             pom.project {  
  13.                 version '1.0.2'  
  14.                 artifactId 'datetimepicker'  
  15.                 groupId 'cn.jesse.android'  
  16.                 packaging 'aar'  
  17.                 description 'dependences lib'  
  18.             }  
  19.         }  
  20.     }  
  21. }  
  22.   
  23. artifacts {  
  24.     archives file('datetimepicker.aar')  
  25. }  

       在Android Studio的Gradle project插件中選中datetimepicker模塊運行uploadArchives任務就可以將該模塊的aar文件以1.0.2的版本部署到Nexus上,供其他項目引用。

       將datetimepicker部署到Nexus上之後,就可以在主模塊的build.gradle直接通過部署時設置的groupId和version建立與datetimepicker之間的依賴。

Java代碼
  1. dependencies {  
  2.     compile 'cn.jesse.android:datetimepicker:1.0.2'  
  3. }  
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved