【问题标题】:Gradle library with multiple modules具有多个模块的 Gradle 库
【发布时间】:2017-07-13 10:44:42
【问题描述】:

我有一个包含多个模块的 gradle (Android) 库,有些模块依赖于其他模块(与这里的答案非常相似 https://stackoverflow.com/a/41761846/906362

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 上是行不通的。

问题:

如何以更明智的方式完成这项工作?

我的意思是,我如何使用本地计算机上的代码/调试,但使用正确的 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 生成这些。

【问题讨论】:

  • 你可以使用SNAPSHOT版本来引用模块github.com/jitpack/jitpack.io的最新提交
  • 但是我看不出这会更好,因为我必须提交,推送到 github,等待构建,并将 gradle 模块更改为这个版本。然后依赖项将与快照相关联。问题不是发布,而是如何使用本地计算机上的内容以及运行./gradle clean build uploadArchives 以基于group:module:version 构建依赖项POM 进行编码/调试

标签: android maven gradle android-library


【解决方案1】:

对于 module2 build.gradle 文件,您应该使用 compile project(':module1')

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多