我试图将Android库发布到本地JFrog Artifactory。目前我有这个:
apply plugin: 'com.jfrog.artifactory'
apply plugin: 'maven-publish'
apply plugin: 'com.android.library'
publishing {
publications {
aar(MavenPublication) {
groupId libraryGroupId
version libraryVersion
artifactId libraryArtifactId
artifact("$buildDir/outputs/aar/app-beta-debug.aar")
}
}
}
artifactory {
contextUrl = 'http://localhost:8081/artifactory'
publish {
repository {
repoKey = 'libs-release-local'
username = artifactory_username
password = artifactory_password
}
defaults {
publications('aar')
publishArtifacts = true
properties = ['qa.level': 'basic', 'q.os': 'android', 'dev.team': 'core']
publishPom = true
}
}
}
为了简洁起见,我跳过了一些像android和依赖项部分的部分。 build.gradle有多个编译依赖项。
gradle artifactoryPublish
将工件发布到Artifactory但生成的pom没有依赖关系。我找到了这个答案:https://stackoverflow.com/a/30523571/2829308
从这个答案中,pom.withXml
起作用(尽管我无法弄清楚如何排除依赖关系)。但这似乎很苛刻。我觉得应该有更好的方法。我尝试使用uploadArchives
方式,如下所示
uploadArchives {
repositories {
mavenDeployer {
repository(url: "http://localhost:8081/artifactory/libs-release-local")
pom.version = libraryVersion
pom.artifactId = libraryArtifactId
pom.groupId = libraryGroupId
}
}
}
它表示任务成功,但神器未在Artifactory中发布。我错过了一些明显的东西吗我该如何解决?
答案 0 :(得分:0)
Pom文件不应包含传递依赖,只能包含直接依赖。 Maven解析pom文件以找到直接依赖关系,下载它们并以递归方式从那里继续。
您应该在pom文件中看到的唯一依赖项是在gradle脚本的dependences
块中声明的依赖项。