2016-05-26 67 views
1

我试图发布一个Android库到本地JFrog Artifactory。目前,我有这样的:包括在Android库生成的POM中的依赖关系

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 

将Artifact发布到Artifactory,但生成的pom不具有传递依赖性。我发现这个答案:https://stackoverflow.com/a/30523571/2829308

从这个答案,pom.withXml工作(虽然我想不出如何排除依赖)。但这看起来很骇人。我觉得应该有更好的方式。我尝试使用uploadArchives方式如下

​​

它说,任务成功,但神器不会被发表在Artifactory的。我错过了明显的东西吗?我该如何解决?

回答

0

Pom文件不应包含传递依赖关系,只能包含直接依赖关系。 Maven解析pom文件以查找直接依赖关系,下载它们并以递归方式从那里继续。

您应该在您的pom文件中看到的唯一依赖项是在您的gradle脚本的dependences块中声明的唯一依赖项。

+0

我想这就是他的意思。图书馆项目有依赖关系,他们不包括在他的pom中。我有同样的问题,除非我这样做。 – CaptRespect