欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

搭建Maven私有仓库

发布时间:2024/4/14 编程问答 45 豆豆
生活随笔 收集整理的这篇文章主要介绍了 搭建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私有仓库的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。