我有一个包含多个模块的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')
时添加的版本依赖项。
目前我已发布到我的本地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生成那些。
答案 0 :(得分:1)
您应该将compile project(':module1')
用于module2 build.gradle文件。
运行./gradlew clean -Pgroup=GROUPNAME -Pversion=VERSION uploadArchives
(或通过gradle.properties设置这些参数)
如果你使用JitPack,它会自动执行此操作