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,它会自动执行此操作
我有一个包含多个模块的 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
.
编辑: 要添加更多信息:
我在这里使用这个脚本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,它会自动执行此操作