【问题标题】:Can gradle init files savely be removed?可以删除 gradle init 文件吗?
【发布时间】:2019-07-09 19:04:15
【问题描述】:

gradle init 在工作目录中创建多个文件:"settings.gradle.kts""gradlew""gradlew.bat""build.gradle.kts" 和“gradle”目录。我更喜欢有一个更干净的工作目录,我可以只保留“build.gradle.kts”并删除其余的吗?

使用“hello world”Java 应用程序,我可以使用“gradle run”启动它,是否有任何我以后会错过的关键功能?

【问题讨论】:

  • gradlew 脚本是Gradle Wrapper;在项目中运行 Gradle 的推荐方式。它可以确保项目中的每个人(以及软件更新之间的您)使用一致版本的 Gradle 来构建项目。
  • [2/] settings.gradle(或settings.gradle.kts)是part of your build script,最后gradle目录包含从临时构建文件到缓存库的所有内容。虽然不是必需的,但它会在每次构建时重新生成,如果您保持不变,构建将执行得更快。

标签: java gradle


【解决方案1】:
Component        || Keep?
-------------------------
build.gradle     || Yes
settings.gradle  || Yes
gradlew          || Yes
gradlew.bat      || Ideally
.gradle          || No

gradlew 签入代码存储库被认为是最佳实践。原因:其他开发人员、测试工具、构建工具将使用与您在本地所做的完全相同的构建配置 - 从而确保一致性并且不会导致需要单独调试的意外问题。

对于多项目代码库,顶层有一个settings.gradle,而每个子项目应该有自己的build.gradle。对于多项目存储库,顶级目录也可以有一个build.gradle,这是一种维护所有子项目的通用插件和依赖项的方式。

settings.gradle 建立项目结构、模块名称、顶级根名称等。而build.gradle 预计包含插件需求(how should these tests run?how to get coverage report?)以及项目的一组依赖项需要。

gradlew.bat 文件是 Windows 系统的 gradle 包装器——为了完全卫生,我会将其签入 VCS,但如果您只关心 *nix 生态系统,您应该能够删除此文件。

现在,回到我提出的第一点,根据您所在的系统,gradle init 可能会生成一个不同的 gradle 包装器,它可能会以意想不到的方式与这些文件交互。因此,最好将它们全部检入 VCS。

我绝对不会检查.gradle/build 目录——它包含大量缓存和用于临时构建步骤的文件。这些东西应该放在.gitignore 中以确保最佳的本地开发速度,但是将这些东西放在VCS 中没有多大意义。

【讨论】:

  • 来自 Maven 或 npm 等其他构建系统,我想知道为什么单个配置文件(pom.xml,分别为 package.json)就足够了,并且不需要包装器。为什么这与 Gradle 不同?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-09
  • 1970-01-01
相关资源
最近更新 更多