Gradle:如何定义一个依赖于Ant目标的任务

3

您好,如果我使用gradle testGradle列出所有任务,我会看到所有导入的ant任务,但是当我尝试创建一个依赖于ant任务的任务时,我会得到“无法确定任务':testGradle'的依赖项”的错误。

有问题的行是:task testGradle(dependsOn: 'init' ) - 显然它没有看到ant init任务。

我做错了什么?

build.gradle

println "this will always runs  first"
task buildM << {
  println "Importing ..."
  ant.importBuild  'build.xml'
  println "Done importing"
}

task testGradle(dependsOn : init ) << {
  println tasks.getByPath('init').path
}

gradle任务全部

其他任务

all compile - 编译主源树Java文件

deploy - deploy WAR file
**init** - Prepare for running compiling artifacts
....

byWorld5 copyTestConfiguration - 复制单元测试配置 deployLoggerProperties - 部署 logging.properties 到 Tomcat execMoped - 执行 Moped importTasks - 导入任务 install - 在 Tomcat 中安装应用程序 list - 列出 Tomcat 应用程序 init - 准备运行编译后的构建产物 reload - 重载 Tomcat 应用程序 start - 启动 Tomcat 应用程序 stop - 停止 Tomcat 应用程序 test - 运行 Junit 测试 compile - 编译主源代码树的 Java 文件

init - Prepare for running compiling artifacts

> gradle -v

Gradle 1.1

构建时间:2012年7月31日星期二下午1:24:32 UTC Groovy版本:1.8.6 Ant版本:Apache Ant(TM)版本1.8.4,编译于2012年5月22日 Ivy版本:2.2.0 JVM版本:1.6.0_24 (Sun Microsystems Inc. 20.0-b12) 操作系统:Linux 2.6.32-220.23.1.el6.x86_64 amd64

>gradle -c

org.gradle.api.GradleScriptException: 在根项目“moped_gradle”中评估时发生问题。 at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:54) at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:127) at org.gradle.configuration.BuildScriptProcessor.evaluate(BuildScriptProcessor.java:38) at org.gradle.configuration.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:43) at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:463) at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:75) at org.gradle.configuration.ProjectEvaluationConfigurer.execute(ProjectEvaluationConfigurer.java:23) at org.gradle.configuration.ProjectEvaluationConfigurer.execute(ProjectEvaluationConfigurer.java:21) at org.gradle.configuration.DefaultBuildConfigurer$1.execute(DefaultBuildConfigurer.java:38) at org.gradle.configuration.DefaultBuildConfigurer$1.execute(DefaultBuildConfigurer.java:35) at org.gradle.api.internal.project.AbstractProject.configure(AbstractProject.java:439) at org.gradle.api.internal.project.AbstractProject.allprojects(AbstractProject.java:434) at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:35) at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:139) at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:110) at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:78) at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:38) at org.gradle.launcher.exec.InProcessGradleLauncherActionExecuter.execute(InProcessGradleLauncherActionExecuter.java:39) at org.gradle.launcher.exec.InProcessGradleLauncherActionExecuter.execute(InProcessGradleLauncherActionExecuter.java:25) at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:50) at org.gradle.launcher.cli.ActionAdapter.execute(ActionAdapter.java:30) at org.gradle.launcher.cli.ActionAdapter.execute(ActionAdapter.java:22) at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:200) at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:173) at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169) at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:138) at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33) at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22) at org.gradle.launcher.Main.doAction(Main.java:48) at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45) at org.gradle.launcher.Main.main(Main.java:39) at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:50) at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:32) at org.gradle.launcher.GradleMain.main(GradleMain.java:26) Caused by: groovy.lang.MissingPropertyException: 在根项目“moped_gradle”上找不到属性“init”。 at org.gradle.api.internal.AbstractDynamicObject.propertyMissingException(AbstractDynamicObject.java:43) at org.gradle.api.internal.AbstractDynamicObject.getProperty(AbstractDynamicObject.java:35) at org.gradle.api.internal.CompositeDynamicObject.getProperty(CompositeDynamicObject.java:60) at org.gradle.groovy.scripts.BasicScript.propertyMissing(BasicScript.java:70) at build_62g86rvs7k0vqsu3ssgdsrobsc.run(/home/natalik/MyInstalls/moped_gradle/build.gradle:14) at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:52) ... 33 more


请您修复帖子的格式,展示所有构建脚本的相关部分,完整的错误信息,完整的堆栈跟踪(-s)以及gradle -v的输出? - Peter Niederwieser
我在我的帖子中添加了gradle -c和gradle -v。以下是我的build.gradle文件。 - Masha Ivanova
如果我将testGradle(dependsOn: init)更改为dependsOn: buildM,所有东西都可以正常运行。但是在testGradle(dependsOn: init)时会出现问题。 - Masha Ivanova
你的 ant.importBuild 需要放在所有任务之外,或者放在所有相关任务之内。 - IgorGanapolsky
1个回答

1

ant.importBuild语句必须在配置阶段调用才能生效。我在执行期间调用了它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接