gradle命令有一系列标志来自定义其环境[1],其中包括--build-file
和--settings-file
,但我似乎无法让它们按照预期的方式工作。
我希望以下方法能起作用
$ cat <<-EOF > alt-settings.gradle
rootProject.name = 'custom-name'
EOF
$ cat <<-EOF > alt-build.gradle
task test { /* ... */ }
EOF
$ gradle \
--settings-file alt-settings.gradle \
--build-file alt-build.gradle \
tasks --all
但这会引发一个异常
Build file './alt-build.gradle' is not part of the build defined by settings file './alt-settings.gradle'. If this is an unrelated build, it must have its own settings file.
如果我在上面的命令中省略--settings-file
,则会正常工作,Gradle会选择alt-build.gradle
。
出了什么问题,我该如何解决?
理想情况下,我希望能够运行gradle
,即使有一个settings.gradle文件不工作。
$ cat <<-EOF > alt-build.gradle
task test { /* ... */ }
EOF
$ cat <<-EOF > alt-settings.gradle
rootProject.name = 'custom-name'
EOF
$ cat <<-EOF > settings.gradle
This will not compile
EOF
$ cat <<-EOF > build.gradle
This will not compile
EOF
$ gradle \
--settings-file alt-settings.gradle \
--build-file alt-build.gradle \
tasks --all
[1] https://docs.gradle.org/current/userguide/command_line_interface.html#environment_options
1条答案
按热度按时间rnmwe5a21#
您需要在自定义设置文件中配置自定义构建文件,然后在调用gradle时仅使用--settings-file参数。
alt-settings.gradle:
alt-build.gradle:
Gradle调用:
这样一来,默认的构建和设置文件根本就不会被使用,它们是否工作也没有关系。
针对较新Gradle版本的更新(haridsv评论后,使用版本8.0.1进行测试):
Gradle升级指南(https://docs.gradle.org/8.0.1/userguide/upgrading_version_7.html#configuring_custom_build_layout)提供了有关如何处理自定义构建布局的建议。您可以在设置文件和/或构建文件中使用if语句来创建不同的构建,如下所示
else分支包含您的默认构建,您可以通过调用gradle来执行它,如下所示:
如果您想要运行自定义构建,您需要使用
-D
命令行选项调用gradle。