搭建Maven私有仓库
內部的項目并且需要多團隊協作模塊化開發的時候,自然會想到搭建自己的maven私有倉庫,本文主要介紹如何搭建maven私服和如何在項目中添加依賴。
Maven 的遠程倉庫分為中央倉庫和私服倉庫。中央倉庫存放了世界各地用戶上傳的依賴包,比較出名的是 JCenter 和 Maven Central,開源的第三方依賴一般都會上傳到這兩個中央倉庫,這樣我們只用添加這兩個中央倉庫的鏈接地址,就可以下載各種我們需要的依賴了
在公司內部,搭建一個 Maven 倉庫,把公司內部不想開源的依賴包上傳到私服倉庫中,有更好保密性和安全性。 順便介紹一個阿里的maven倉庫
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/'} 復制代碼可以幫助你快速通過gradle build
有三種比較流行的 Maven 倉庫管理軟件可以創建私服,Apache基金會的 Archiva,JFrog 的 Artifactory ,Sonatypec 的 Nexus
使用Nexus搭建Maven私有倉庫
環境
要求 Java 8 Runtime Environment或者以上
查看java版本
java -version 復制代碼下載運行Nexus
去 官網 下載 www.sonatype.com/download-os… 根據你的操作系統選擇下載,解壓
進入 nexus-3.14.0-04-mac/nexus-3.14.0-04/bin 目錄,執行
// Unix & OS X ./nexus run// Windows nexus.exe /run 復制代碼控制臺顯示如下,表示成功啟動服務
Started Sonatype Nexus OSS 復制代碼打開瀏覽器,輸入 http://localhost:8081/ 就可以看到管理界面
默認的管理員賬號密碼為
username:admin password:admin123 復制代碼至此,使用nexus搭建的maven私有倉庫已經準備就緒,接下來是如何上傳Library和如何添加依賴
上傳Library
Library Moudle 的 gradle.properties 文件里配置上傳參數
# 上傳的Library信息 GROUP=com.group.moduleteam VERSION_NAME=1.0.0 POM_ARTIFACT_ID=modulelibrary# 上傳的目標倉庫地址 SNAPSHOT_REPOSITORY_URL=http://localhost:8081/repository/maven-snapshots/ RELEASE_REPOSITORY_URL=http://localhost:8081/repository/maven-releases/# Nexus私服的用戶名稱和密碼 NEXUS_USERNAME=admin NEXUS_PASSWORD=admin123 復制代碼然后在Library Moudle 的gradle.properties文件里加上
apply plugin: 'maven'def isReleaseBuild() {return VERSION_NAME.toUpperCase().contains("SNAPSHOT") == false } def getRepositoryUsername() {return hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : "" } def getRepositoryPassword() {return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : "" } def getRepositoryUrl() {return isReleaseBuild() ? RELEASE_REPOSITORY_URL : SNAPSHOT_REPOSITORY_URL } afterEvaluate { project ->uploadArchives {repositories {mavenDeployer {pom.groupId = GROUPpom.artifactId = POM_ARTIFACT_IDpom.version = VERSION_NAMErepository(url: getRepositoryUrl()) {authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())}}}}task androidJavadocs(type: Javadoc) {source = android.sourceSets.main.java.srcDirsclasspath += project.files(android.getBootClasspath().join(File.pathSeparator))}task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {classifier = 'javadoc'from androidJavadocs.destinationDir}task androidSourcesJar(type: Jar) {classifier = 'sources'from android.sourceSets.main.java.sourceFiles}//解決 JavaDoc 中文注釋生成失敗的問題tasks.withType(Javadoc) {options.addStringOption('Xdoclint:none', '-quiet')options.addStringOption('encoding', 'UTF-8')options.addStringOption('charSet', 'UTF-8')}artifacts {archives androidSourcesJararchives androidJavadocsJar} }復制代碼也可以把以上 build.gradle中的配置,創建一個 gradle 文件,例如 upload_nexus.gradle中,然后在 build.gradle中引用upload_nexus.gradle
apply from: 'upload_nexus.gradle' 復制代碼配置已經完成,打開Android Studio 中打開右側的 Gradle 側邊欄,打開 這個module library,可以看到 uploadArchives,這就是剛才創建的上傳 Task,點擊即可完成上傳
如果 uploadArchives Task 執行成功,在 Nexus 倉庫中可以看到上傳的內容
點擊左側導航欄 Browse - maven-public 就可以看到
添加私有庫依賴
項目根路徑的build.gradle
buildscript {repositories {google()jcenter()maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}maven { url 'http://localhost:8081/repository/maven-public/' }} }allprojects {repositories {google()jcenter()maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}maven { url 'http://localhost:8081/repository/maven-public/' }} }復制代碼然后,在需要引用該三方庫的目標 Module 的 build.gradle 中添加此庫的依賴
dependencies {implementation 'com.group.moduleteam:modulelibrary:1.0.0' } 復制代碼就可以正常使用私有Library了
補充一下清理gradle緩存的命令:
// OS X ./gradlew build --refresh-dependencies// Windows gradlew build --refresh-dependencies 復制代碼轉載于:https://juejin.im/post/5bd1805fe51d457a2b7b23c5
總結
以上是生活随笔為你收集整理的搭建Maven私有仓库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 格式化的盘要怎么恢复数据
- 下一篇: [Google Guava] 2.3-强