具有多个模块的Gradle库

时间:2017-07-13 10:44:42

标签: android maven gradle android-library

我有一个包含多个模块的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生成那些。

1 个答案:

答案 0 :(得分:1)

您应该将compile project(':module1')用于module2 build.gradle文件。

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

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