Gradle 具有多个模块的库

Gradle library with multiple modules

我有一个包含多个模块的 gradle (Android) 库,一些模块依赖于其他模块(非常类似于这里的答案

root/
  |- module1 -> (no dependncy)
  |- module2 -> compile project(':module1')
  |- module3 -> (no dependncy)
  |- module4 -> compile project(':module1') compile project(':module3')
  |- etc...

这对开​​发来说效果很好,因为我可以对任何模块进行更改,并看到它们反映在其他模块上。 但是要将构建发布到 jcenter(),我需要依赖项是他们的在线版本。像这样:

root/
  |- module1 -> (no dependncy)
  |- module2 -> compile '<group>:modules1:<version>'
  |- module3 -> (no dependncy)
  |- module4 -> compile '<group>:modules1:<version>' compile '<group>:modules3:<version>'
  |- etc...

以便在将其添加到项目时,它会正确引用在 jcenter() 上找到的版本,而不是在使用 compile project(':module1') 时添加的 UNSPECIFIED 依赖项。

目前我已经发布到我的本地 maven 副本,更改依赖项以使用编号版本,然后发布到 jcenter()。但这是大量的手动工作,无法在 CI.

上运行

问题:

如何以更明智的方式进行这项工作?

我的意思是,我如何 code/debug 使用本地计算机上的内容,但使用正确的 group:module:version.

生成 POM

编辑: 要添加更多信息:

我在这里使用这个脚本https://github.com/sensorberg-dev/gradle-bintray-push/blob/master/gradle-bintray-push.gradle 生成依赖项并上传。

当前 compile project 的依赖项是这样生成的:

<dependency>
  <groupId>_name of the project_</groupId>
  <artifactId>_name of the module_</artifactId>
  <version>unspecified</version>
  <scope>compile</scope>
</dependency>

我需要使用项目的实际 groupId 和 artifactId 生成它们。

您应该对模块 2 build.gradle 文件使用 compile project(':module1')

运行 ./gradlew clean -Pgroup=GROUPNAME -Pversion=VERSION uploadArchives(或通过 gradle.properties 设置这些参数)

如果您使用 JitPack,它会自动执行此操作