使用 Artifactory 搭建 maven 私有仓库

  1. 下载 Artifactory OSS
  2. 下载后解压
1
2
3
4
5
6
7
8
9
## 移动目录
mv artifactory-oss-5.10.3/ /usr/local/

## 建立启动文件
echo 'cd /usr/local/artifactory-oss-5.10.3/bin/; ./artifactory.sh $1' > /usr/local/bin/artifactory
chmod +x /usr/local/bin/artifactory

## 启动服务
artifactory start

访问 http://localhost:8081,根据指引进行 admin 密码设置,Create Gradle Repository。

至此,Artifactory 环境初始化完毕。

模块管理工程 ExampleKit

编辑 ExampleKit 根目录中 gradle.properties 文件,添加以下相关变量,例

1
2
3
4
arti_maven_path=http://localhost:8081/artifactory
arti_repo_key=gradle-release-local
arti_username=admin
arti_password=123456

编辑 ExampleKit 根目录 build.gradle 文件,在buildscript -> dependencies 中添加声明,例

1
2
3
4
5
6
7
8
buildscript {
dependencies {
...
///////////////// 添加 /////////////////
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.7.1"
///////////////////////////////////////
}
}

在子工程的 build.gradle 中调用 my-arti.gradle 脚本,例

1
2
3
4
5
6
7
8
9
10
11
12
...
...

///////////////// 添加 /////////////////
ext {
arti_group_id = 'com.example'
arti_id = 'module1'
arti_version = android.defaultConfig.versionName
}

apply from: 'https://raw.githubusercontent.com/fangqk1991/gradle-artifactory-push/master/my-arti.gradle'
///////////////////////////////////////
1
2
3
4
5
6
## 发布类库
./gradlew assembleRelease
./gradlew artifactoryPublish

## 发布单个模块
./gradlew :SOME_MODULE:artifactoryPublish

如图可见,com.example.module1 已经发布成功,pom 文件中也包含了其在 build.gradle 中的依赖。

应用工程 AppExample

编辑 AppExample 根目录中 gradle.properties 文件,添加以下相关变量,例

1
arti_maven_repo=http://localhost:8081/artifactory/gradle-release-local

编辑 ExampleKit 根目录 build.gradle 文件,在allprojects -> repositories 中添加声明,例

1
2
3
4
5
6
7
8
allprojects {
repositories {
...
///////////////// 添加 /////////////////
maven { url arti_maven_repo }
///////////////////////////////////////
}
}

至此,即可正常引入私有依赖模块。

示例工程

以上 KitExampleAppExample 可参见示例工程 artifactory-example

  • KitExample - Module 1: 直接引入 libammsdk.jar
  • KitExample - Module 2: 引入外部依赖 AsyncHttpClient
  • KitExample - Module 3: 引入 “外部” 依赖 Module 1Module 2,并实现相关调用方法
  • AppExample: 引入 “外部” 依赖 Module 3 进行一些测试,未发生 ClassNotFoundException 异常即测试通过

私有服务器

如需搭建公网私服,请参考 Artifactory 私有服务器搭建

参考链接