ฉันต้องการใช้ lib เวอร์ชันหลักจาก mavencentral
เป็นไปได้หรือไม่ที่จะประกาศที่เก็บ git เป็นการพึ่งพาใน android gradle?
ฉันต้องการใช้ lib เวอร์ชันหลักจาก mavencentral
เป็นไปได้หรือไม่ที่จะประกาศที่เก็บ git เป็นการพึ่งพาใน android gradle?
คำตอบ:
สำหรับฉันวิธีที่ดีที่สุดคือ:
ขั้นตอนที่ 1. เพิ่มที่เก็บ JitPack ใน build.gradle ที่ส่วนท้ายของที่เก็บ:
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
จากนั้นรวมโปรเจ็กต์ไว้ในไฟล์ settings.gradle ของคุณซึ่งควรมีลักษณะดังนี้
include ':my-app', ':my-sub-project'
สุดท้ายรวบรวมโปรเจ็กต์เป็นการพึ่งพาในไฟล์ build.gradle ของแอปพลิเคชันของคุณเช่นนี้
dependencies {
compile project(':my-sub-project')
}
จากนั้นเมื่อทำการโคลนโปรเจ็กต์ของคุณคุณจะต้องเพิ่มอ็อพชัน--recursive
เพื่อทำให้ git โคลนที่เก็บรูทโดยอัตโนมัติและโมดูลย่อยทั้งหมด
git clone --recursive my_sub_project_git_url
ฉันหวังว่ามันจะช่วยได้
ตอนนี้มีฟีเจอร์ใหม่ใน gradle ที่ให้คุณเพิ่ม source dependencies จาก git
ก่อนอื่นคุณต้องกำหนด repo ใน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'
}
}
}
ข้อควรระวัง:
อ้างอิง:
ฉันไม่คิดว่า Gradle สนับสนุนการเพิ่มที่เก็บ git เป็นการอ้างอิง วิธีแก้ปัญหาของฉันคือ:
ฉันคิดว่าคุณต้องการ repo ไลบรารีนอกโฟลเดอร์ของ repo โปรเจ็กต์หลักดังนั้นแต่ละโปรเจ็กต์จะเป็น git repos ที่เป็นอิสระและคุณสามารถคอมมิตกับไลบรารีและที่เก็บ git หลักของโปรเจ็กต์ได้อย่างอิสระ
สมมติว่าคุณต้องการให้โฟลเดอร์ของโครงการไลบรารีอยู่ในโฟลเดอร์เดียวกับโฟลเดอร์ของโครงการหลัก
คุณสามารถ:
ใน settings.gradle ระดับบนสุดให้ประกาศที่เก็บไลบรารีเป็นโปรเจ็กต์โดยระบุตำแหน่งในระบบไฟล์
// 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' )
ใช้ปลั๊กอิน gradle-gitเพื่อโคลนไลบรารีจากที่เก็บ 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-dependenciesแต่ฉันไม่สามารถใช้งานร่วมกับปลั๊กอิน Android ได้พยายามดึงจาก maven แม้หลังจาก git โหลด repos แล้ว