【问题标题】:Extract sub-project names from multi-module project从多模块项目中提取子项目名称
【发布时间】:2021-09-09 01:08:56
【问题描述】:

我正在尝试从 Gradle 多模块项目中提取子项目名称并将它们放在下面的多模块项目的列表中(即 ["services", "shared"]

> gradle -q projects

------------------------------------------------------------
Root project 'multiproject'
------------------------------------------------------------

Root project 'multiproject'
+--- Project ':services'
\--- Project ':shared'

To see a list of the tasks of a project, run gradle <project-path>:tasks
For example, try running gradle :api:tasks

到目前为止,我已经创建了一个 gradle 任务并且我正在获取详细信息,但我无法从 DefaultProject_Decorated 中提取项目名称,我尝试查看 gradle doc 但没有太大帮助。

task('extractSubprojectName') {
    def subProjects = []

    println rootProject.getSubprojects() // [project :'services', project :'shared']
    println rootProject.getSubprojects().getClass() // class java.util.TreeSet

    rootProject.getSubprojects().each { module -> 
        println "Module : " + module // Module : project :'services'
        println "Module Class: " + module.getClass() // Module Class: org.gradle.api.internal.project.DefaultProject_Decorated

        // I am trying to achieve something like below 
        // subProjects.add(module.getProjectName()) // of course getProjectName() is madeup name which doesn't exits in DefaultProject_Decorated

       // - business requirement on subProjects - 
    }
}

希望有更好的解决方案吗?否则我必须添加逻辑将其转换为字符串类型,然后从中提取名称。

【问题讨论】:

  • 您想使用 Gradle 还是使用一些脚本语言和 curl 来触发 REST 端点?
  • 我记得我们可以在 Gradle 任务中触发 curl 命令来完成这项工作。任何事情都可以,脚本或 Gradle 任务,无论哪个更简单。

标签: java gradle groovy multi-module


【解决方案1】:

从它的source codegetName 可能是你想要的:

tasks.register("zz") {
    doLast {
        println rootProject.getSubprojects()
        println rootProject.getSubprojects().getAt(0).getName()
        println rootProject.getSubprojects().getAt(0).getName().getClass()
    }
}
$ ./gradlew zz

> Task :zz
[project ':aa', project ':bb']
aa
class java.lang.String

BUILD SUCCESSFUL in 684ms
1 actionable task: 1 executed

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-07
    • 2014-03-28
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多