gpt4 book ai didi

gradle - 为什么 ./gradlew clean build 和 ./gradlew clean :build 之间有区别

转载 作者:行者123 更新时间:2023-12-03 03:05:23 27 4
gpt4 key购买 nike

我有以下情况:

我有一个包含几个子项目的项目。今天我尝试通过命令行使用 gradle 构建项目。

执行 ./gradlew clean :build 时构建成功, 但不是 ./gradlew clean build .根据激活的子项目,它会导致不同的错误。 这是为什么?不应该一样吗?

两个命令直接在彼此之后执行,代码没有变化,并且来自同一个目录(基目录,settings.gradle 所在的位置。

Intellij 的 gradle-refresh 工作,构建成功(但在我们的构建服务器上失败,如果相关的话)。

根据文档 https://docs.gradle.org/current/userguide/command_line_interface.html#executing_tasks_in_multi_project_builds我假设它会做同样的事情,因为没有指定子项目,并且为所有子模块执行构建任务。没有名为 build 的文件夹在根项目中,所以这不会引起混淆。我解释错了吗?

我在网上搜索了,但是我找不到结果,因为:大多数搜索引擎无法识别它,并且 colon导致不相关的结果,如 What is the colon operator in Gradle? .

gradle 版本是 4.10.2

如果您需要更多信息,请告诉我。

最佳答案

./gradlew clean :build 之间有区别和 ./gradlew clean build ,这就是您有不同行为的原因:在第一种情况下,您使用的是合格的任务名称,在另一种情况下,您使用的是简单的任务名称。这些文档 herehere解释执行任务的这两种方法:

  • 使用简单的任务名称(./gradlew test):

  • The first approach is similar to the single-project use case, but Gradle works slightly differently in the case of a multi-project build. The command gradle test will execute the test task in any subprojects, relative to the current working directory, that have that task. So if you run the command from the root project directory, you’ll run test in api, shared, services:shared and services:webservice. If you run the command from the services project directory, you’ll only execute the task in services:shared and services:webservice.



    => 所以执行 ./gradlew build在根项目目录中将触发 build 的执行根项目和所有子项目的任务
  • 使用限定任务名称 (./gradlew :build)

  • For more control over what gets executed, use qualified names (the second approach mentioned). These are paths just like directory paths, but use ‘:’ instead of ‘/’ or ‘\’. If the path begins with a ‘:’, then the path is resolved relative to the root project. In other words, the leading ‘:’ represents the root project itself. All other colons are path separators.



    => 执行 ./gradlew :build ,您将“仅”执行 build rootProject 的任务

    正如我在评论中所说,您可能在一个或多个子项目中遇到一些问题,但如果您只执行 Root 项目构建 ( ./gradlew :build),您将不会看到这些错误

    关于gradle - 为什么 ./gradlew clean build 和 ./gradlew clean :build 之间有区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53394617/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com