【发布时间】: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