Gradle多模块项目同步至JCenter的相关问题咨询
关于Bintray同步JCenter的两个疑问解答
问题1:是否需要将所有5个项目都关联到JCenter,还是仅公开核心构件?
答案是必须将全部5个构件都关联到JCenter。原因很直接:你的核心主构件运行时依赖另外4个辅助构件,当其他开发者通过JCenter引入你的核心构件时,他们的构建工具(Gradle/Maven)会自动尝试从JCenter拉取所有依赖的构件。如果那4个辅助构件没同步到JCenter,构建工具就会报错,提示找不到对应的artifact,直接导致依赖解析失败。
哪怕用户只需要用到核心构件,背后的依赖链要求所有相关构件都必须在JCenter中存在,所以不能只同步核心一个,得把5个都关联上。
问题2:“Is Pom Project”复选框的作用是什么?Gradle自动生成POM的情况下需要勾选吗?
这个复选框的作用是标记当前Bintray包为仅包含POM文件的项目——比如Maven的父POM、聚合项目(没有实际业务代码,只是用来管理子项目的POM),这类项目本身没有JAR/AAR等二进制构件,只有POM文件。
而你的每个模块都是有独立JAR构件,且Gradle已经自动为每个构件生成了对应的POM文件(用来描述依赖、构件信息等),这类属于常规的二进制构件项目,完全不需要勾选这个复选框。如果错误勾选了,Bintray会把这个包识别为POM-only项目,反而可能干扰构件的正常分发和拉取。
内容的提问来源于stack exchange,提问作者suushiemaniac
相关产品推荐
相关产品推荐

