我有以下情况:
我有一个包含多个子项目的项目。今天我尝试通过命令行使用 gradle 构建项目。
执行时构建成功./gradlew clean :build,但使用./gradlew clean build. 它会导致不同的错误,具体取决于激活的子项目。这是为什么?不应该是一样的吗?
这两个命令直接在彼此之后执行,代码没有变化,并且从同一目录(base-directory,所在的目录)执行settings.gradle。
Intellij 的 gradle-refresh 工作,构建成功(但在我们的构建服务器上失败,如果相关的话)。
根据文档https://docs.gradle.org/current/userguide/command_line_interface.html#executing_tasks_in_multi_project_builds我认为它会做同样的事情,因为没有指定子项目,并且为所有子模块执行构建任务。build根项目中没有调用文件夹,因此这不会引起混淆。我解释错了吗?
我在网上搜索,但是,我找不到结果,因为:大多数搜索引擎都无法识别它,并colon导致不相关的结果,例如Gradle 中的冒号运算符是什么?.
gradle 版本是 4.10.2
如果您需要更多信息,请告诉我。
M.R*_*uti 10
./gradlew clean :build和之间存在差异./gradlew clean build,这就是为什么您有不同的行为:在第一种情况下,您使用的是合格的任务名称,在另一种情况下,您使用的是简单的任务名称。这些文档here和here解释了这两种执行任务的方法:
./gradlew test) :第一种方法类似于单项目用例,但 Gradle 在多项目构建的情况下的工作方式略有不同。命令 gradle test 将在具有该任务的任何子项目中执行测试任务,相对于当前工作目录。因此,如果您从项目根目录运行该命令,您将在 api、shared、services:shared 和 services:webservice 中运行测试。如果从 services 项目目录运行该命令,则只会在 services:shared 和 services:webservice 中执行任务。
=> 所以./gradlew build在根项目目录下执行会触发build根项目和所有子项目的任务执行
./gradlew :build) 为了更好地控制执行的内容,请使用限定名称(提到的第二种方法)。这些路径就像目录路径,但使用“:”而不是“/”或“\”。如果路径以“:”开头,则路径是相对于根项目解析的。换句话说,前导的“:”代表根项目本身。所有其他冒号都是路径分隔符。
=>执行./gradlew :build,您将“仅”执行build任务rootProject
正如我在评论中所说,您的一个或多个子项目中可能存在一些问题,但是如果您只执行 Root project build ( ./gradlew :build) ,您将不会看到这些错误
| 归档时间: |
|
| 查看次数: |
3988 次 |
| 最近记录: |