我有一个要求gradle脚本(或gradle插件)必须解析gradle文件并打印所有特定类型的任务;我尝试引用gradle工具api,但未成功。
这是我尝试的:
ProjectConnection connection = GradleConnector.newConnector().forProjectDirectory(new File(System.env.REPO_ROOT)).connect()
try {
BuildEnvironment environment = connection.model(BuildEnvironment.class).get()
connection.model(GradleProject.class).get().getTasks().each {
if (it instanceof EMTest) {
println it
}
}
} finally {
connection.close()
}
这会在我当前的build.gradle中打印任务列表,这是预期的,因为我没有在任何地方指定目标gradle文件。
当我尝试使用以下代码运行(而不是在其中打印/查找任务)时。有用。
ProjectConnection connection = GradleConnector.newConnector().forProjectDirectory(new File(System.env.REPO_ROOT)).connect()
try {
BuildEnvironment environment = connection.model(BuildEnvironment.class).get()
def build = connection.newBuild()
/* This is where the gradle script location is provided */
build.withArguments("--continue", "-b", System.env.REPO_ROOT + "/tests/suites/${project.lrgs}.gradle",
"-PlrgName=${project.lrgs}", "-PlrgMetadataLoc=${lrgMetadataLoc}")
build.forTasks(project.lrgs)
build.setStandardOutput(System.out)
build.run()
} finally {
connection.close()
}
我检查了gradle工具API,但未成功。请帮忙。
最佳答案
工具API允许外部工具(例如IDE)与Gradle构建进行交互。 Gradle构建脚本或插件可以仅遍历project.tasks
。
关于gradle - 阅读gradle脚本并找到其中定义的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26726396/