Tôi muốn sử dụng phiên bản chính của lib của tôi từ mavencentral.
Có thể khai báo kho lưu trữ git là phụ thuộc trong android gradle không?
Tôi muốn sử dụng phiên bản chính của lib của tôi từ mavencentral.
Có thể khai báo kho lưu trữ git là phụ thuộc trong android gradle không?
Câu trả lời:
Đối với tôi, cách tốt nhất là:
Bước 1. Thêm kho lưu trữ JitPack vào build.gradle ở cuối kho:
repositories {
// ...
maven { url "https://jitpack.io" }
}
Bước 2. Thêm phần phụ thuộc vào biểu mẫu
dependencies {
compile 'com.github.User:Repo:Tag'
}
Có thể xây dựng cam kết mới nhất trên nhánh chính, ví dụ:
dependencies {
compile 'com.github.jitpack:gradle-simple:master-SNAPSHOT'
}
-SNAPSHOT
jitpack.io/docs/#snapshots
buildscript
Hoặc bạn có thể đăng ký một kho lưu trữ dưới dạng mô-đun con như thế này
$ git submodule add my_sub_project_git_url my-sub-project
Sau đó, bao gồm dự án trong tệp settings.gradle của bạn, tệp này sẽ giống như thế này
include ':my-app', ':my-sub-project'
Cuối cùng, biên dịch dự án dưới dạng phụ thuộc trong tệp build.gradle ứng dụng của bạn như thế này
dependencies {
compile project(':my-sub-project')
}
Sau đó, khi nhân bản dự án của bạn, bạn sẽ chỉ phải thêm tùy chọn --recursive
để làm cho git tự động sao chép kho lưu trữ gốc và tất cả các mô-đun con của nó.
git clone --recursive my_sub_project_git_url
Tôi hy vọng nó sẽ giúp.
Hiện có một tính năng mới trong gradle cho phép bạn thêm các phụ thuộc nguồn từ git.
Trước tiên, bạn cần xác định repo trong settings.gradle
tệp và ánh xạ nó tới một mã định danh mô-đun:
sourceControl {
gitRepository("https://github.com/gradle/native-samples-cpp-library.git") {
producesModule("org.gradle.cpp-samples:utilities")
}
}
Và bây giờ trong của build.gradle
bạn, bạn có thể trỏ đến một thẻ cụ thể (ví dụ: 'v1.0'):
dependencies {
...
implementation 'org.gradle.cpp-samples:utilities:v1.0'
}
Hoặc đến một chi nhánh cụ thể:
dependencies {
...
implementation('org.gradle.cpp-samples:utilities') {
version {
branch = 'release'
}
}
}
Lưu ý:
Người giới thiệu:
Tôi không nghĩ Gradle hỗ trợ thêm kho lưu trữ git làm phụ thuộc. Cách giải quyết của tôi là:
Tôi giả sử rằng bạn muốn kho thư viện bên ngoài thư mục của kho dự án chính, vì vậy mỗi dự án sẽ là các kho lưu trữ git độc lập và bạn có thể thực hiện cam kết đối với các kho lưu trữ git thư viện và dự án chính một cách độc lập.
Giả sử bạn muốn có thư mục của dự án thư viện trong cùng thư mục với thư mục của dự án chính,
Bạn có thể:
Trong settings.gradle cấp cao nhất, khai báo kho thư viện là một dự án, với vị trí của nó trong hệ thống tệp
// Reference: https://looksok.wordpress.com/2014/07/12/compile-gradle-project-with-another-project-as-a-dependency/
include ':lib_project'
project( ':lib_project' ).projectDir = new File(settingsDir, '../library' )
Sử dụng plugin gradle-git để sao chép thư viện từ kho lưu trữ git
import org.ajoberstar.gradle.git.tasks.*
buildscript {
repositories { mavenCentral() }
dependencies { classpath 'org.ajoberstar:gradle-git:0.2.3' }
}
task cloneLibraryGitRepo(type: GitClone) {
def destination = file("../library")
uri = "https://github.com/blabla/library.git"
destinationPath = destination
bare = false
enabled = !destination.exists() //to clone only once
}
Trong phần phụ thuộc của dự án của bạn, giả sử rằng mã của dự án của bạn phụ thuộc vào thư mục của dự án git
dependencies {
compile project(':lib_project')
}
Điều gần nhất tôi đã tìm thấy là https://github.com/bat-cha/gradle-plugin-git-dependencies nhưng tôi không thể làm cho nó hoạt động với plugin android, tiếp tục cố gắng kéo từ maven ngay cả sau git repos được tải.