【问题标题】:Is it possible to pass a parameter to settings.gradle是否可以将参数传递给 settings.gradle
【发布时间】:2018-01-24 12:34:53
【问题描述】:

出于性能原因,我想添加一个命令行参数以完全跳过一些子项目。我的 settings.gradle 看起来像这样:

rootProject.name='MyProject'

if (!rootProject.hasProperty('NO_LIBRARY_BUILD')) {
    print "=== BUILDING OF LIBRARY PROJECTS. Pass -PNO_LIBRARY_BUILD to gradle to skip building ==="
    include('Lib1')
    project(':Lib1').projectDir=file('Path/to/Lib1')
    include('Lib2')
    project(':Lib2').projectDir=file('Path/to/Lib2')
}
else { 
    print "=== SKIPPING BUILD OF LIBRARY PROJECTS ==="
}

但是,这不起作用 - 传递 -PNO_LIBRARY_BUILD 仍会进入 if 的“构建”部分。我假设这些属性没有传递给 rootProject,而是传递给其他地方。 如何从设置 gradle 访问(更重要的是,如何检查是否存在)NO_LIBRARY_BUILD 命令行参数?

【问题讨论】:

    标签: gradle


    【解决方案1】:

    我发现有效的方法是简单地使用 hasProperty('NO_BUILD_LIBRARIES') 不指定项目。

    【讨论】:

    • 到目前为止,对于升级的 gradle 版本,它仍然适用于我。它可能不适用于早期版本,这似乎是合理的,但我可以确认它直到今天仍然有效。
    • 在 Gradle 7.1.1 上测试。仅仅使用 hasProperty 是行不通的。
    【解决方案2】:

    在 Gradle 7.1.1 上测试。仅仅使用 hasProperty 是行不通的。使用 settings.hasProperty('abc') 适用于 -Pabc=true。 参考:https://docs.gradle.org/current/dsl/org.gradle.api.initialization.Settings.html

    【讨论】:

      猜你喜欢
      • 2021-11-11
      • 2011-04-22
      • 2020-09-14
      • 2012-12-26
      • 1970-01-01
      • 1970-01-01
      • 2017-07-08
      • 1970-01-01
      • 2010-09-15
      相关资源
      最近更新 更多