2

有一点问题,我生成的 .pom(使用 Gradle v4.10.3 和 maven-publish gradle 插件)不包括传递依赖。从我读过的内容来看,它应该是读取项目依赖项并包括它们(我认为!),而不是我必须在 .pom 中手动声明它们。我确实查看了 Pom 对象的文档,但没有看到任何可以声明传递依赖的方法。

https://gitlab.com/snippets/1822620

这是我的项目根目录的 build.gradle.kts 文件的片段,以及来自我的子项目的 build.gradle.kts 文件 ( android-core) 的代码。如您所见,子项目android-core依赖于子项目core,但是当我生成 .pom 时它没有被声明为这样。

是否有一个我应该设置的设置告诉 .pom 在哪里找到依赖项?还是我以完全错误的方式解决这个问题?任何和所有的帮助表示赞赏!

编辑:我的管道日志文件中有这个,这可以解释为什么android-core看不到core依赖(也许?)

22:47:03.531 [INFO] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] :generatePomFileForMaven-android-corePublication (Thread[Daemon worker,5,main]) started.

22:47:06.746 [INFO] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] :generatePomFileForMaven-android-localPublication (Thread[Daemon worker,5,main]) started.

22:47:23.416 [INFO] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] :generatePomFileForMaven-corePublication (Thread[Daemon worker,5,main]) started.

22:47:25.259 [INFO] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] :generatePomFileForMaven-learningPublication (Thread[Task worker for ':',5,main]) started.

但是,我不知道他们为什么会乱序生成 Pom,因为它正在通过一个具有预定义顺序的列表。

编辑:解决方案好的,以上问题 - 上传顺序,我认为是因为 Maven Publish 插件正在异步上传,并且内容core需要更长的时间才能解决,因为它具有更多的依赖关系并且整体更大。我将我的发布切换为基于每个子项目,并在 CI 脚本文件中一个接一个地显式调用,现在它可以按预期与所有依赖项一起工作。

旁注:当我切换到单独的子项目发布方法时,我确实必须将插件切换到maven-publish插件android-maven-publish以使其支持发布(因为如果你也有,你不能将java插件包含在 android 项目中com.android.library)。我还不得不切换from(components["java"])from(components["android"]).

我认为这不是最好的方法,但在这一点上,至少它有效。我将来会尝试更好地优化它(欢迎任何实际答案!)

4

0 回答 0