问题描述
简短版本: 模块 A 和 B 是我的 Android 库的模块。 在发布依赖于模块B的模块A时,如何在发布过程中设置模块B的版本?
我使用 Kotlin 开发了一个带有多个模块的 Android 库,其中一些模块相互依赖。我使用 JFrog Artifactory 进行托管,使用它的 gradle 插件来发布库模块。 为了生成有效的 POM,我在模块 build.gradle 的发布闭包中手动生成它。将模块集成到不同的项目中时,在接收模块的所有依赖项时,我无法设置本地依赖项的版本。
我用来设置本地依赖的代码:
implementation project(path: ':core')
implementation project(path: ':auth')
task androidJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getbootclasspath().join(File.pathSeparator))
options {
failOnError false
encoding "UTF-8"
charSet "UTF-8"
addStringOption('Xdoclint:none','-quiet')
}
android.libraryVariants.all { variant ->
if (variant.name == 'release') {
variant.javaCompileProvider.configure{
owner.classpath += variant.javaCompiler.classpath
}
}
}
exclude '**/R.html','**/R.*.html','**/index.html'
}
task androidJavadocsJar(type: Jar,dependsOn: androidJavadocs) {
archiveClassifier = 'javadoc'
from androidJavadocs.destinationDir
}
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
archiveClassifier = 'sources'
}
publishing {
publications {
aar(MavenPublication) {
groupId POM_GROUP_ID
artifactId POM_ARTIFACT_ID
version POM_VERSION
description POM_DESCRIPTION
artifact("$buildDir/outputs/aar/${project.getName()}-release.aar")
artifact androidJavadocsJar
artifact sourcesJar
pom.withXml {
final dependenciesNode = asNode().appendNode('dependencies')
ext.addDependency = { Dependency dep,String scope ->
if (dep.group == null || dep.version == null || dep.name == null || dep.name == "unspecified")
return // ignore invalid dependencies
if (dep.group == "MyDevGroup") // I am skipping my local dependencies on other modules
return // ignore invalid dependencies
final dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId',dep.group)
dependencyNode.appendNode('artifactId',dep.name)
dependencyNode.appendNode('version',dep.version)
dependencyNode.appendNode('scope',scope)
if (!dep.transitive) {
// If this dependency is transitive,we should force exclude all its dependencies them from the POM
final exclusionNode = dependencyNode.appendNode('exclusions').appendNode('exclusion')
exclusionNode.appendNode('groupId','*')
exclusionNode.appendNode('artifactId','*')
} else if (!dep.properties.excludeRules.empty) {
// Otherwise add specified exclude rules
final exclusionNode = dependencyNode.appendNode('exclusions').appendNode('exclusion')
dep.properties.excludeRules.each { ExcludeRule rule ->
exclusionNode.appendNode('groupId',rule.group ?: '*')
exclusionNode.appendNode('artifactId',rule.module ?: '*')
}
}
}
// List all "compile" dependencies (for old Gradle)
configurations.compile.getDependencies().each { dep -> addDependency(dep,"compile") }
// List all "api" dependencies (for new Gradle) as "compile" dependencies
configurations.api.getDependencies().each { dep -> addDependency(dep,"compile") }
// List all "implementation" dependencies (for new Gradle) as "runtime" dependencies
configurations.implementation.getDependencies().each { dep -> addDependency(dep,"runtime") }
}
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)