借鉴原文:http://blog.bihe0832.com/private_maven.html
首先,你的电脑里要有JDK,此处略;
其次我的电脑是Mac.部分配置和路径和windows不同 不过大同小异。
1. 安装Sonatype Nexus
下载
wget http://www.sonatype.org/downloads/nexus-latest-bundle.tar.gz
此时我的文件夹下有如下文件:nexus-latest-bundle.tar.gz
解压
tar zxvf nexus-latest-bundle.tar.gz
得到文件夹nexus-2.14.3-02 后面是版本号,可能有所不同
结构如图
至于把这个文件夹放在那里 各位自便
修改变量和配置
修改的文件为 nexus主目录/bin/nexus 文件
修改之前我设置了环境变量NEXUS_HOME 为我的nexus文件夹
主目录并且设置了PATH,这是一个习惯。
以下变量:
export NEXUS_HOME="xxx/Library/nexus-2.14.3-02"
export RUN_AS_USER=root
export PLATFORM=macosx-universal-64
export PLATFORM_DIR=${NEXUS_HOME}/bin/jsw/${PLATFORM}
export PATH="${PATH}:${PLATFORM_DIR}:xxxxxxxx(我的其他变量)"
测试
启动服务
因为我们设置的角色为root,所以先切换
sudo su
然后启动服务,此命令在 xxx/nexus/bin 下
nexus start
Nexus安装完成,成功启动服务以后,打开浏览器,输入: http://localhost:8081/nexus/即可打开配置管理的页面。正常打开则说明安装成功了。
浏览器界面内配置
配置Respository
点击界面右上角 “Log in”,然后输入账号密码(默认用户名:admin密码:admin123)即可登入管理。
进入界面以后,点击左侧Repositories,右侧会出现很多库的配置:
Public Repositories: 仓库组
3rd party: 无法从公共仓库获得的第三方发布版本的构件仓库
Apache Snapshots: 用了代理ApacheMaven仓库快照版本的构件仓库
Central: 用来代理maven中央仓库中发布版本构件的仓库
Central M1 shadow: 用于提供中央仓库中M1格式的发布版本的构件镜像仓库
Codehaus Snapshots: 用来代理CodehausMaven 仓库的快照版本构件的仓库
Releases: 用来部署管理内部的发布版本构件的宿主类型仓库
Snapshots:用来部署管理内部的快照版本构件的宿主类型仓库
点击add,选择 proxy Repository,然后添加相关配置。下图为个人添加阿里云的镜像的相关配置:
配置完所有配置以后点击save,即可把阿里云添加到代理仓库。
创建Nexus仓库组:
仓库的顺序其实就是查找的顺序,先找本地 再找国内镜像 再找中央仓库 把快的放在前面。
然后呢,可以传库上去了,怎么传呢,我的项目依赖了很多库工程,正是这些库工程导致我的编译器慢的要死,我现在要传我的一个库工程上去:
主要工程目录下,也就是项目最外层有个文件 gradle.properties
添加如下配置:
#本地库
#仓库组
GOUNP_REPOSITORY_URL="http://xxxxx"
RELEASE_REPOSITORY_URL=http://localhost:8081/nexus/content/repositories/releases/
SNAPSHOT_REPOSITORY_URL=http://localhost:8081/nexus/content/repositories/snapshots/
#对应maven的groupId值
GROUP_ID=就是创建group时候的group id
#登录nexus oss的用户名
NEXUS_USERNAME=admin
#登录nexus oss的密码
NEXUS_PASSWORD=xxxx
# TYPE
TYPE = aar
# description
DESCRIPTION = dependences util lib
VERSION_NAME=0.0.1-SNAPSHOT
POM_ARTIFACT_ID=util
以上配置完成,其实主要是一些变量 配置到主要工程目录下后可以全局使用,大家其他的一些开发过程中的变量也可以利用这样的方式例如在local.properties中定义一些全局变量。
接下来在我想要上传的工程项目 FlycoRoundView_Lib 中 build.gradle文件里:
apply plugin: 'com.android.library'
apply plugin: 'maven' //注意这里
-------以下为项目固有内容------
version = "1.1.0"
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
minSdkVersion 8
targetSdkVersion 23
versionCode 110
versionName version
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v4:23.1.1'
}
------以上为固有内容------
uploadArchives {
configuration = configurations.archives
repositories {
mavenDeployer {
snapshotRepository(url: SNAPSHOT_REPOSITORY_URL) {
authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
}
repository(url: RELEASE_REPOSITORY_URL) {
authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
}
pom.project {
version '0.0.1'
artifactId 'FlycoRoundView_Lib'//与下方一致
groupId GROUP_ID
packaging TYPE
description DESCRIPTION
}
}
}
}
artifacts {
archives file('FlycoRoundView_Lib.aar')//与上方一致
}
编译,编译之后点击AS右侧的gradle
检查我的maven
在项目目录下的build.gradle 也就是最外层的build.gradle中添加如下:
allprojects {
repositories {
jcenter()
//添加如下 此处具体位置各位按自己库配置即可
maven {url GOUNP_REPOSITORY_URL}
}
}
在主module文件夹 build.gradle中 也就是自己写主要代码那个文件夹里,添加:
compile 'group_id:FlycoRoundView_Lib:0.0.1'
注意此处各位写的时候,格式为:
compile 'groupid:artifactId:version'
然后去掉原来的module对FlycoRoundView_Lib项目的引用,移除FlycoRoundView_Lib文件夹(虽然移除但是我没删除,防止以后万一改源码),运行整个项目, 成功运行,没有报错,针对该项目的引用被成功移动到我的私有maven库中,项目跑起来的时候不会再编译FlycoRoundView_Lib引用库了,也就节省了编译运行的时间。