Gradle, 在buildSrc中找不到属性。

4

我创建了一个自定义任务,名称为MySqlTask.groovy

import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction

public class MySqlTask extends DefaultTask {
  def hostname = 'localhost'
  def sql

  @TaskAction
  def runQuery() {
   //to do something...
  }
}

我将此文件放在rootProject/buildSrc/src/main/groovy中。

我的构建文件是customtasksourcetree.gradle。

任务createDatabase(type: MySqlTask) { sql = 'CREATE DATABASE IF NOT EXISTS example' }

当我使用customtasksrc.gradle运行gradle时,会出现以下错误。

FAILURE: Build failed with an exception.

* Where:
Build file '/Users/need4spd/Programming/Java/workspace/gradleTest/customtasksourcetree.gradle' line: 1

* What went wrong:
A problem occurred evaluating root project 'gradleTest'.
> Could not find property 'MySqlTask' on root project 'gradleTest'.

我了解到,buildSrc中的自定义任务文件将在构建期间自动编译并添加到类路径中。

我可以在buildSrc/build/classes中看到已编译的MySqlTask.class文件。

有什么问题吗?谢谢。

1个回答

4
我认为问题是因为您没有在构建脚本中导入MySqlTask。

1
我需要在构建脚本中导入自定义任务吗?http://www.gradleware.com/registered/books/building-and-testing/tasks.html 上没有提到它。我会尝试找一下相关信息。谢谢! - yongseok Jang
只有在你的任务类中有package语句时,才需要使用导入。显然你的没有。尝试运行gradle --stop,然后进行一次干净的构建。还可以尝试删除.gradle目录。 - Peter Niederwieser
1
@yongseokJang,那个链接已经失效了,你有没有新的可用链接可以更新一下? - roundcrisis

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