我们可以读取settings.gradle中的命令行参数吗?

我们可以读取settings.gradle中的命令行参数吗?,gradle,multi-module,Gradle,Multi Module,我想读取settings.gradle中的命令行参数,以便在include命令行中只添加那些子模块 我们可以读取settings.gradle中的命令行参数吗?您不能读取settings.gradle文件中的整个命令行参数,尽管您可以做的是读取,并且这些参数可以与命令行参数一起传递 例如,如果要指定在Gradle build中包含子项目-1,则必须按如下方式提供此值: gradlew build -Pincluded.projects=sub-project-1 注意带有选项-p的CLI命令定

我想读取settings.gradle中的命令行参数,以便在include命令行中只添加那些子模块


我们可以读取settings.gradle中的命令行参数吗?

您不能读取settings.gradle文件中的整个命令行参数,尽管您可以做的是读取,并且这些参数可以与命令行参数一起传递

例如,如果要指定在Gradle build中包含子项目-1,则必须按如下方式提供此值:

gradlew build -Pincluded.projects=sub-project-1
注意带有选项-p的CLI命令定义项目属性。它必须具有指定的键和值。在本例中,包含键。项目,值为子项目-1

在设置文件中,您可以使用以下方法在项目对象上读取它<代码>获取属性().get(字符串键)

以下是设置脚本(如果您有名称为的子模块):

  • 子模块-1
  • 子模块-2
  • 子模块-3
它将读取包含要包含在生成脚本中的模块列表的属性。若属性为空,则将包括所有模块,否则它将选择传入的子项目名称,并仅包括当前的子项目名称。没有对子项目名称进行验证

// Define all the sub projects
def subprojects = ['sub-project-1', 'sub-project-2', 'sub-project-3'] as Set

// Read all subprojects from the project properties.
// Example of passed in project properties with Gradle CLI with the -P option
// `gradlew build -Pincluded.projects=sub-project-1,sub-project-3`
def includedProjectsKey="included.projects"
def projectsToIncludeInput = hasProperty(includedProjectsKey) ? getProperties().get(includedProjectsKey) : ""

Set<String> projectsToInclude = []
if(projectsToIncludeInput != "") {

  // Include passed in sub projects from project arguments
  projectsToIncludeInput.toString().split(",").each {
    projectsToInclude.add(it)
  }
} else {

  // Include all sub projects if none is specified
  projectsToInclude = subprojects
}

// Include sub projects
projectsToInclude.each {
  include it
}
//定义所有子项目
def子项目=['sub-project-1'、'sub-project-2'、'sub-project-3']作为集合
//从项目属性中读取所有子项目。
//带有-P选项的Gradle CLI传入的项目属性示例
//`gradlew build-Pincluded.projects=sub-project-1,sub-project-3`
def includedProjectsKey=“included.projects”
def projectsToIncludeInput=hasProperty(includedProjectsKey)?getProperties().get(includedProjectsKey):“”
将项目设置为包含=[]
如果(项目包括输入!=“”){
//包含从项目参数传入的子项目
项目包括Input.toString().split(“,”)。每个{
projectsToInclude.add(it)
}
}否则{
//如果未指定子项目,则包括所有子项目
projectsToInclude=子项目
}
//包括子项目
每个项目包括{
包括它
}

@Renatolvancic这起作用了。谢谢。感激