gpt4 book ai didi

android - 实现Maven项目的内部依赖关系

转载 作者:行者123 更新时间:2023-12-03 05:38:01 29 4
gpt4 key购买 nike

我已经创建了一个库,可以在我们的大多数项目中使用。到目前为止,我们一直在将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等。我应该怎么做才能使该库也实现自己的依赖关系?任何帮助表示赞赏,谢谢。

最佳答案

您的所有依赖项都在implementation配置中声明。这意味着它们不会作为库API的一部分公开。它们不是编译时间依赖性。

这将在已发布的Maven POM中得到反射(reflect),它们将出现在Maven runtime范围内。
因此,对于使用者而言,它们只会添加到运行时类路径,而不是编译路径。

如果您希望库的依赖关系在使用者的编译类路径上直接可见,则需要将它们添加到api配置中。因为这将使它们暴露于Maven compile范围,并且对使用者的编译类路径可见。

关于android - 实现Maven项目的内部依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54643797/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com