我有一个包含4个模块的库(它们都是aar的)。在更新到每个模块的最新gradle之前,我需要运行artifactoryPublish任务。现在,我需要在触发每个发布任务之前清理和重建一个项目。
> Task :module-1:generatePomFileForAarPublication
> Task :module-1:artifactoryPublish
> Task :extractModuleInfo
No publisher config found for project: android-integration-sdk-light
> Task :module-1:extractModuleInfo
> Task :module-2:extractModuleInfo
> Task :module-3:extractModuleInfo
> Task :module-4:extractModuleInfo
[pool-4-thread-1] Deploying artifact: https://xxx.yyy
[pool-4-thread-1] Deploying artifact: https://xxx.yyy
> Task :artifactoryDeploy
BUILD SUCCESSFUL in 6s运行的第一个任务
> Task :module-1:generatePomFileForAarPublication
> Task :module-1:artifactoryPublish
> Task :extractModuleInfo UP-TO-DATE
> Task :module-1:extractModuleInfo UP-TO-DATE
> Task :module-2:extractModuleInfo UP-TO-DATE
> Task :module-3:extractModuleInfo UP-TO-DATE
> Task :module-4:extractModuleInfo UP-TO-DATE
> Task :artifactoryDeploy
BUILD SUCCESSFUL in 2s第二个任务运行
Config for artifactory:
apply plugin: 'com.jfrog.artifactory'
apply plugin: 'maven-publish'
apply from: "../artifactory/config.gradle"
publishing {
publications {
aar(MavenPublication) {
groupId project.groupId
version project.versionName
artifactId project.name
artifact("$buildDir/outputs/aar/${project.getName()}-release.${project.fileExtension}")
pom.withXml {
def node = asNode()
// ugly hack to set the packaging property in the POM as 'aar'
((NodeList) node.get('packaging')).get(0).value = project.fileExtension
def dependenciesNode = node.appendNode('dependencies')
def cl = { Dependency dep ->
if (dep.group == null || dep.name == null || dep.name == "unspecified") {
return // ignore invalid dependencies
}
def dependencyVersion
//Only a temporary hack - need more investigation
def dependencyGroup
if (dep.group == "mobile-library") {
dependencyGroup = groupId
} else {
dependencyGroup = dep.group
}
//"fix" for compile projects
if (dep.version == "unspecified" || dep.version == null) {
dependencyVersion = project.versionName
} else {
dependencyVersion = dep.version
}
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', dependencyGroup)
dependencyNode.appendNode('artifactId', dep.name)
dependencyNode.appendNode('version', dependencyVersion)
if (!dep.transitive) {
// If this dependency is transitive, we should force exclude all its dependencies them from the POM
def exclusionNode = dependencyNode.appendNode('exclusions').appendNode('exclusion')
exclusionNode.appendNode('groupId', '*')
exclusionNode.appendNode('artifactId', '*')
} else if (!dep.properties.excludeRules.empty) {
// Otherwise add specified exclude rules
def exclusionsNode = dependencyNode.appendNode('exclusions')
dep.properties.excludeRules.each { ExcludeRule rule ->
def exclusion = exclusionsNode.appendNode('exclusion')
exclusion.appendNode('groupId', rule.group ?: '*')
exclusion.appendNode('artifactId', rule.module ?: '*')
}
}
}
// List all dependencies and write to POM
configurations.api.getAllDependencies().each cl
configurations.implementation.getAllDependencies().each cl
}
}
}
}
artifactory {
contextUrl = repositoryPath
publish {
repository {
repoKey = repositoryName
username = repositoryUserName
password = repositoryPassword
maven = true
}
defaults {
publications('aar')
publishArtifacts = true
// Publish generated POM files to Artifactory (true by default)
}
}
}在子模块中使用该文件,每个模块都有自己的名称:
project.ext {
name = "module-1"
fileExtension = "aar"
}
apply plugin: 'com.android.library'
apply from: "../artifactory/release.gradle"我应该在每次发布前强制清除任务和重建任务吗?或者我应该尝试在主gradle文件中为每个模块设置一个入口点?
发布于 2020-11-25 17:48:13
这个问题应该已经在Gradle Artifactory plugin 4.18.0中解决了。
您可以在此处找到有关此问题的更多信息:https://github.com/jfrog/build-info/issues/383
请升级您的Gradle Artifactory插件。
https://stackoverflow.com/questions/65000131
复制相似问题