我有一个要求,即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但没有成功。请帮忙。
答案 0 :(得分:1)
工具API允许外部工具(例如IDE)与Gradle构建进行交互。 Gradle构建脚本或插件可以迭代project.tasks
。
答案 1 :(得分:0)
只是使用GradleBuild会起作用吗?来自http://www.gradle.org/docs/current/userguide/organizing_build_logic.html和 60.4。从构建中运行另一个Gradle构建
在你的情况下,
的内容task othertasks(type: GradleBuild) {
buildFile = 'other.gradle'
tasks = ['tasks']
}