Mavencentral'daki kütüphanemin ana sürümünü kullanmak istiyorum.
Android gradle'da git deposunu bağımlılık olarak bildirmek mümkün müdür?
Mavencentral'daki kütüphanemin ana sürümünü kullanmak istiyorum.
Android gradle'da git deposunu bağımlılık olarak bildirmek mümkün müdür?
Yanıtlar:
Benim için en iyi yol:
Adım 1. Depoların sonunda build.gradle'a JitPack deposunu ekleyin:
repositories {
// ...
maven { url "https://jitpack.io" }
}
Adım 2. Bağımlılığı forma ekleyin
dependencies {
compile 'com.github.User:Repo:Tag'
}
Ana dalda en son yürütmeyi oluşturmak mümkündür, örneğin:
dependencies {
compile 'com.github.jitpack:gradle-simple:master-SNAPSHOT'
}
-SNAPSHOT
jitpack.io/docs/#snapshots
buildscript
Veya bir depoyu bunun gibi bir alt modül olarak kaydedebilirsiniz
$ git submodule add my_sub_project_git_url my-sub-project
Ardından projeyi, böyle görünmesi gereken settings.gradle dosyanıza ekleyin
include ':my-app', ':my-sub-project'
Son olarak, projeyi uygulama build.gradle dosyanızda aşağıdaki gibi bir bağımlılık olarak derleyin
dependencies {
compile project(':my-sub-project')
}
Ardından, projenizi klonlarken, yalnızca --recursive
git'in kök depoyu ve tüm alt modüllerini otomatik olarak klonlaması seçeneğini eklemeniz gerekecektir .
git clone --recursive my_sub_project_git_url
Umut ediyorum bu yardım eder.
Artık gradle'da git'ten kaynak bağımlılıkları eklemenize izin veren yeni bir özellik var.
Önce depoyu settings.gradle
dosyada tanımlamanız ve bir modül tanımlayıcısıyla eşleştirmeniz gerekir:
sourceControl {
gitRepository("https://github.com/gradle/native-samples-cpp-library.git") {
producesModule("org.gradle.cpp-samples:utilities")
}
}
Ve şimdi build.gradle
sizde belirli bir etiketi işaret edebilirsiniz (örneğin: 'v1.0'):
dependencies {
...
implementation 'org.gradle.cpp-samples:utilities:v1.0'
}
Veya belirli bir şubeye:
dependencies {
...
implementation('org.gradle.cpp-samples:utilities') {
version {
branch = 'release'
}
}
}
Uyarılar:
Referanslar:
Gradle'ın bağımlılık olarak bir git deposu eklemeyi desteklediğini sanmıyorum. Çözümüm şudur:
Kitaplık deposunu ana proje deposu klasörünün dışında istediğinizi varsayıyorum, böylece her proje bağımsız git depoları olacak ve kitaplık ve ana proje git depolarına bağımsız olarak taahhütler verebilirsiniz.
Kütüphane projesinin klasörünün, ana projenin klasörüyle aynı klasörde olmasını istediğinizi varsayarsak,
Yapabilirdiniz:
Üst düzey settings.gradle içinde, dosya sistemindeki konumu göz önüne alındığında kitaplık havuzunu bir proje olarak bildirin
// 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 eklentisini kullanınKitaplığı git deposundan klonlamak kullanın
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
}
Projenizin bağımlılıklarında, projenizin kodunun git projesinin klasörüne bağlı olduğunu söyleyin.
dependencies {
compile project(':lib_project')
}
Bulduğum en yakın şey https://github.com/bat-cha/gradle-plugin-git-dependencies ama android eklentisiyle çalışmasını sağlayamıyorum, gittikten sonra bile maven'den çekmeye çalışıyorum depolar yüklenir.