我已经创建了一个库,可以在我们的大多数项目中使用。到目前为止,我们一直在将Github与Jitpack一起使用,但我们的Jitpack订阅已过期,我们已经找到了一种将项目上传到其他地方的替代方法。我们正在使用 myMavenRepo 。我可以从this answer上传项目。但是,存在一个问题(没有答案来包含项目本身的依赖关系。)
该项目包含依赖项,并且当我们将该项目添加到另一个项目时,不会添加依赖项。我想弄清楚该怎么做。
这是我的代码:
apply plugin: 'com.android.library'
apply plugin: 'maven-publish'
task sourceJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier "sources"
}
publishing {
publications {
Repo(MavenPublication) {
groupId 'com.example.repo'
artifactId 'Repo'
version '1.3.7'
artifact(sourceJar)
artifact("$buildDir/outputs/aar/repo-release.aar")
}
}
repositories {
maven {
url "https://mymavenrepo.com/repo/repo_url/"
}
}
}
android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 16
targetSdkVersion 28
versionCode 137
versionName "1.3.7"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation ("com.kochava.base:tracker:3.5.0") {
exclude group: "com.android.support"
}
implementation ("com.google.firebase:firebase-core:16.0.6") {
exclude group: "com.android.support"
}
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
// Required: Install Referrer (If publishing to Google Play)
implementation 'com.android.installreferrer:installreferrer:1.0'
// Optional: Instant App Status Collection
implementation 'com.google.android.instantapps:instantapps:1.1.0'
// Required for Flurry Analytics integration
implementation 'com.flurry.android:analytics:11.4.0@aar'
// Crashlytics implementation.
implementation('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') {
transitive = true
}
}
发布过程是使用./gradlew clean build publish
(我正在使用ubuntu)进行的,发布成功。从存储库的读取端来看,我们是这样实现的(将Maven URL放入allprojects部分之后):
implementation 'com.example.repo:Repo:1.3.7'
虽然添加了项目本身,但未添加内部依赖项,例如Crashlytics,Flurry,Firebase Core等。我应该怎么做才能使该库也实现自己的依赖关系?谢谢您的帮助。
答案 0 :(得分:0)
所有依赖项都在implementation
配置中声明。这意味着它们不会作为您的库API的一部分公开。它们不是 compile 时间依赖性。
这将反映在已发布的Maven POM中,它们将出现在Maven runtime
范围内。
因此,对于消费者而言,它们只会添加到 runtime 类路径中,而不是编译路径中。
如果希望库的依赖项在使用者的编译类路径上直接可见,则需要将它们添加到api
配置中。因为这将使它们暴露于Maven compile
范围,并且对使用者的编译类路径可见。