【问题标题】:How can I get Gradle module name programmatically如何以编程方式获取 Gradle 模块名称
【发布时间】:2023-04-04 03:25:01
【问题描述】:

是否可以在 Java 代码中以编程方式获取 Gradle 的模块名称?

我需要它来访问MODULE_NAME/build/intermediates 目录下的模块构建文件,但是硬编码模块名称是个坏主意。

【问题讨论】:

    标签: android gradle android-gradle-plugin build.gradle


    【解决方案1】:

    您可以在构建脚本中访问project 变量,该变量是Project 的实例。它有各种吸气剂,如 projectDir 或 buildDir,由于使用它们很常见,因此记录在 user guide 中。

    或者,如果您在此处查找生成文件的任务的输出,也可以找到此路径。

    如果您需要在测试中知道这个位置,您可以使用系统属性从构建脚本传递它,如下所示: test { systemProperty "buildFolder", project.buildDir.absolutePath }

    顺便说一句:https://github.com/gradle/gradle/blob/master/gradle/idea.gradle#L192 有一个技巧,如何使用测试执行所需的属性更新 IntelliJ 工作区中的运行配置。如果您在 IJ 中运行 JUnit 测试(不委托给 Gradle),这会很有用。

    【讨论】:

    • 我将如何在 Java 代码中使用它?我在单元测试运行程序中需要它,所以在 build.gradle 中使用它并不能解决我的问题
    • 你应该说你需要它!尝试像 Radim 建议的那样,将它作为 Gradle 构建脚本中的系统属性传递给您的测试用例。然后您的测试代码可以使用 System.getProperty("buildFolder") 访问它。
    • 这总是指向多模块/monorepo项目中的根模块
    【解决方案2】:

    要获取当前的模块名称,您只需访问 Gradle 的 project 对象

    project.name
    

    将返回,用于模块app

    应用程序

    见:https://docs.gradle.org/current/userguide/writing_build_scripts.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-07
      • 2016-09-14
      • 2018-09-20
      • 1970-01-01
      • 1970-01-01
      • 2018-03-12
      • 1970-01-01
      • 2018-09-15
      相关资源
      最近更新 更多