何时使用Gradle子项目以及何时使用Java软件包

时间:2018-07-09 17:00:46

标签: java gradle

这是一个有关在Gradle中构建项目的方式以及何时应使用子项目而不是软件包的问题。

让我们想象一个小项目:

该项目是一个API,它是REST API的抽象级别。该项目处理缓存失效,对象抽象(因此您可以调用user.setPassword而不是自己执行HTTPS请求)。

为此,该项目分为三个部分:

  1. 公共API,其中包含应该对最终用户可用的调用
  2. 内部缓存验证系统和对象复制(诸如User等类)
  3. HTTPS处理程序(而不是每次要请求某些内容时都必须创建原始HTTPS请求,而是查询项目的具有此方法的部分post(url, token, JsonParameters)

在使用Gradle之前,我会将所有这些都设置为单独的Java包。

现在我正在使用Gradle,在我看来HTTPS处理程序应该是一个子项目,因为它完全独立于其他所有东西。这样,如果未修改Gradle,它将不会重新编译/重新测试。

我不确定内部缓存等应该是子项目还是仅仅是包。据我了解:

  • 程序包:代码与主要的公共代码紧密相关,在这里这不是问题,但是最终用户可以访问它,这不好(因为公共程序包使用的每个类都必须是公共的)
  • 子项目:该代码未与主代码绑定,这实际上意味着某些意图相似的代码(公共API和缓存)位于两个不同的位置。我不确定最终用户是否可以使用它...

此外,当我声明对MavenCentral上某个项目的依赖性时(例如),我确实可以访问其依赖性,对吗?在这种情况下,我希望导入我的项目的用户只能访问“公共”部分。我在Android教程中看到可以指定依赖级别(例如,可以声明公共API中是否存在某些依赖)。这是Android-Gradle的特定功能,还是可以在常规Gradle上使用? (我正在使用Gradle 4.4版)。如果可以的话,该问题的首选解决方案是在子项目中写入缓存等,然后以这种方式将其导入主项目吗?

0 个答案:

没有答案