मैं mavencentral से अपने lib के मास्टर संस्करण का उपयोग करना चाहता हूं।
क्या एंड्रॉइड ग्रेडेल में निर्भरता के रूप में गिट रिपॉजिटरी घोषित करना संभव है?
मैं mavencentral से अपने lib के मास्टर संस्करण का उपयोग करना चाहता हूं।
क्या एंड्रॉइड ग्रेडेल में निर्भरता के रूप में गिट रिपॉजिटरी घोषित करना संभव है?
जवाबों:
मेरे लिए सबसे अच्छा तरीका है:
चरण 1. रिपोजिटरी के अंत में build.gradle पर JitPack रिपॉजिटरी जोड़ें:
repositories {
// ...
maven { url "https://jitpack.io" }
}
चरण 2. प्रपत्र में निर्भरता जोड़ें
dependencies {
compile 'com.github.User:Repo:Tag'
}
उदाहरण के लिए, मास्टर शाखा पर नवीनतम प्रतिबद्ध बनाना संभव है:
dependencies {
compile 'com.github.jitpack:gradle-simple:master-SNAPSHOT'
}
-SNAPSHOT
jitpack.io/docs/#snapshots
buildscript
या आप एक रिपॉजिटरी को इस तरह से एक सबमॉड्यूल के रूप में पंजीकृत कर सकते हैं
$ git submodule add my_sub_project_git_url my-sub-project
फिर अपनी सेटिंग्स में प्रोजेक्ट को शामिल करें। फ़ाइल को इस तरह दिखना चाहिए
include ':my-app', ':my-sub-project'
अंत में, इस तरह से अपने आवेदन build.gradle फ़ाइल में निर्भरता के रूप में परियोजना को संकलित करें
dependencies {
compile project(':my-sub-project')
}
फिर, जब अपनी परियोजना को क्लोन करते हैं, तो आपको केवल --recursive
रूट रिपॉजिटरी और इसके सभी सबमॉड्यूल्स को स्वचालित रूप से क्लोन करने के लिए विकल्प जोड़ना होगा ।
git clone --recursive my_sub_project_git_url
मुझे उम्मीद है यह मदद करेगा।
अब ग्रेडेल में एक नई सुविधा है जो आपको गिट से स्रोत निर्भरता जोड़ने की सुविधा देती है।
आपको सबसे पहले रेपो को settings.gradle
फाइल में परिभाषित करना होगा और इसे एक मॉड्यूल पहचानकर्ता के पास मैप करना होगा:
sourceControl {
gitRepository("https://github.com/gradle/native-samples-cpp-library.git") {
producesModule("org.gradle.cpp-samples:utilities")
}
}
और अब build.gradle
आप में आप एक विशिष्ट टैग (जैसे: 'v1.0') को इंगित कर सकते हैं:
dependencies {
...
implementation 'org.gradle.cpp-samples:utilities:v1.0'
}
या एक विशिष्ट शाखा के लिए:
dependencies {
...
implementation('org.gradle.cpp-samples:utilities') {
version {
branch = 'release'
}
}
}
चेतावनियां:
संदर्भ:
मुझे नहीं लगता कि ग्रैडल एक निर्भरता के रूप में गिट रिपॉजिटरी को जोड़ने का समर्थन करता है। मेरा समाधान यह है:
मुझे लगता है कि आप मुख्य परियोजना रेपो के फ़ोल्डर के बाहर लाइब्रेरी रेपो चाहते हैं, इसलिए प्रत्येक प्रोजेक्ट स्वतंत्र गिट रेपो होगा, और आप लाइब्रेरी और मुख्य प्रोजेक्ट गिट रिपॉजिटरी से स्वतंत्र रूप से कमिट कर सकते हैं।
मान लें कि आप लाइब्रेरी प्रोजेक्ट का फ़ोल्डर उसी फ़ोल्डर में रखना चाहते हैं जिसमें मुख्य प्रोजेक्ट का फ़ोल्डर है,
आप ऐसा कर सकते हैं:
शीर्ष-स्तरीय सेटिंग में। फ़ाइल सिस्टम में स्थान को देखते हुए, लाइब्रेरी रिपॉजिटरी को प्रोजेक्ट के रूप में घोषित करें
// 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' )
लाइब्रेरी को git रिपॉजिटरी से क्लोन करने के लिए gradle-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
}
अपनी परियोजना की निर्भरता में, कहते हैं कि आपकी परियोजना का कोड गिट परियोजना के फ़ोल्डर पर निर्भर करता है
dependencies {
compile project(':lib_project')
}
निकटतम चीज़ जो मुझे मिली है वह है https://github.com/bat-cha/gradle-plugin-git-d dependencies लेकिन मैं इसे एंड्रॉइड प्लगइन के साथ काम करने के लिए नहीं प्राप्त कर सकता हूं, गिट के बाद भी मैवेन से खींचने की कोशिश करता रहता है रेपो लोड किए गए हैं।