我有一個需求,其中gradle腳本(或gradle插件)必須解析gradle文件並打印所有特定類型的任務;我試着引用gradle工具API,但沒有成功。閱讀gradle腳本並找到其中定義的任務
這裏是我的嘗試:
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 tooling API但沒有成功。請幫忙。
行同意當它同gradle這個文件中。我的要求是這樣的: 運行:gradle runSuite -PtestScriptFile = foo 這將在build.gradle中運行runSuite任務;但runSuite將不得不在'foo.gradle'中運行類型爲MyTest的所有任務(由項目屬性提供)。 MyTest是自定義測試任務類型,用於運行定製gradle插件中定義的perl腳本/ shell腳本。 – 2014-11-04 08:59:37